目前有个情景: 嵌套很深的子组件(展示型组件),需要触发的action(比如说路由跳转),想避免层层传递相关的action creater, 或dispatcher方法。 所以想这么做:
将redux的store实例设为全局对象即global.store = store这样,然后在任何地方任何时间都可以store.dispatch().
等于不再使用react-redux的mapDispatcherToProps方法了。
这么干会有问题或坑么?
这样明显不符合redux 设计初衷了,任何组件都可以通过全局的store 去修改状态了。建议还是在action触发放在 root组件, 至于深层组件,可以通过事件通知到 root组件,再有组件触发 action. 其次组件嵌套层级一般是不建议超过3级以上的,可以去考虑下是否真的需要使用父子组件的形式,是否可以由兄弟组件替代部分。
这个做法逻辑上是跑的通的,主要坑在于服务端渲染。
如果做服务端渲染的话,服务端需要一份自己的store做渲染
这样明显不符合redux 设计初衷了,任何组件都可以通过全局的store 去修改状态了。建议还是在action触发放在 root组件, 至于深层组件,可以通过事件通知到 root组件,再有组件触发 action. 其次组件嵌套层级一般是不建议超过3级以上的,可以去考虑下是否真的需要使用父子组件的形式,是否可以由兄弟组件替代部分。
这个做法逻辑上是跑的通的,主要坑在于服务端渲染。
如果做服务端渲染的话,服务端需要一份自己的store做渲染