如何用 react-redux 创建可以自包含的 component ?

2016-06-21 15:05:36 +08:00
 eromoe
前一个帖子也说了,现在在做一个 file manager webui , 昨天碰到一些基本的问题都已经解决了,现在卡在一个大问题上。就是自包含 component.

大家都知道一般的 file manager 左侧都有一个树形的浏览器,我想用一个 component 表示所有的节点,比如这个 conponent 叫 TreeNode 。每个 TreeNode 下面也会有子节点,同样也是 TreeNode , 他们的 state 是 {path, children_nodes, right .....}, 但是内容都不同。 children_nodes 是从服务器拿的, path 是 parent 传给他的(因为 parent 拿到了 children_nodes , 然后 map 到子节点 的时候可以把 path 传给他).

结构像这样(文件浏览器所以层数不限。。):

App:
TreeNode
--TreeNode
----TreeNode
----TreeNode
TreeNode
TreeNode
--TreeNode
TreeNode
--TreeNode
----TreeNode
----TreeNode


我有一个 OPEN_NODE action , 用来触发 getFileList (获取文件列表函数,在 action creator 里),然后把 state.open 设置为 true

然后现在的问题是,因为只能 connect 根节点 App ,导致所有子节点所接受的 state 都变得一样了。。。

v2ex 代码显示太恶心了。。还是贴 github 地址吧 https://github.com/eromoe/simple-redux-boilerplate

关键代码在
containers/App.js:
containers/TreeNode.js
actions/NodeActions.js
reducers/TreeNodeReducer.js


现在卡在这里不知道怎么往下做。。。。
2306 次点击
所在节点    React
3 条回复
SuperMild
2016-06-21 15:36:58 +08:00
可以参考这里 http://blog.zigomir.com/react.js/jquery/2015/01/11/jquery-versus-react-thinking.html
给每个 TreeNode 加个 id 来控制。
eromoe
2016-06-21 15:50:50 +08:00
@SuperMild 他这个只有一层,不是自己嵌套自己,所以没有这个问题。。。
eromoe
2016-06-21 16:43:26 +08:00
突然想到 可以 直接传个 完整对象进去。。。只要做个 map {path: children}就好了,不用传整个树
action 更新这个 map 。。。应该可行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/287308

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX