react-redux是一个效率低下的东西?

学 react-native 的时候花了好多东西来学react-redux,今天终于有点眉目了,却发现这特么有点坑啊 !!

1、子组件需要使用 store 的时候,需要父组件传个 store = {this.props.store} 给子组件?
2、子组件的状态只能够通过父组件用 this.props 一层一层的传递去改变,这样的话,效率不是很低?

比如 :

父组件使用了 createStore、Provider、connect 绑定各种东西到它的 props 之后,传给子组件。

<父组件>
    <子组件 {...this.props}></子组件>
</父组件>

子组件收到 props 后再传给下一级子组件。

<子组件>
    <小子组件 {...this.props}></小子组件>
</子组件>

所以,要改变「小子组件」的状态,需要从顶级的父组件一层一层传下来?

是不是我的用法不对,还是redux本来就是这样设计、使用的啊?

阅读 6.4k
7 个回答

你还没理解redux,他可以层层传也可以不传直接连上store这样和根同步,你要哪个就声明哪个。。。

不是只有父组件可以被connect,子组件也是可以的(官方推荐这么做,而且有好处)。仍使用属性传递的方式,就失去了使用redux的意义了。

如果你指的是react-redux这个redux开发者写的号称official redux binding的东西,最好不要用,麻烦比收益多。

另外说一下你说的效率问题,React的render,本质上是function的嵌套调用,即所谓的function composition,现代的JS引擎都是编译运行,且非常激进的inline,且具有hotpath动态优化能力,所以所谓的层层传递并不是像代码形势上看到的那样层层传递的执行,执行时的效率高很多。

不要什么项目都用redux来做。
只有那些模块依赖强的才需要。
像一般的webapp几乎都是分模块来做的,数据依赖性不强,不需要弄redux
react-router+react就够了,真的。

我一般都是container直接使用connect(),component就用props传。当然还有比较新的特性context,可以让你不需要props传,直接通过 this.context.xxx 获取,只需要声明一下contextTypes就可以了。具体自行搜索吧。

一层一层传是react自身的特性,而用redux恰好可以改变只一点,所有的组件通过redux对state处理可以统一管理数据,我大概是这么理解的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题