react redux 展示组件可以嵌套容器组件吗?

现在是很深的展示组件,发现很多从根组件传过来的props并不需要,就想把现在的展示组件变成容器组件,一般容器组件是存在根组件里面的,如下被Provider包裹起来,并且是一个store,如果嵌套在很深的展示组件内,怎么去实现一个容器组件?

<Provider store={store}>
</Provider>
阅读 6.4k
3 个回答

之前我也有这个疑问,但是在看官方demo的时候,发现 展示组件可以嵌套 容器组件,但是官方文档没找到
有图有真相
图片描述

概略说明Redux中的容器组件与呈现组件,只是Redux自己作的区分,类似的区分方式还有很多,像智慧组件与笨组件、有状态与无状态组件、实际上只是为了说明不同的组件作的事的分隔而已。呈现组件就作显示用,里面没有用react-redux的绑定逻辑而已,对React来说只是个组件,通常是个无状态的函数型组件。不用太拘泥于这个区分法,用久了就习惯知道了。容器组件一般而言则是有状态的组件,里面会用了react-redux的绑定逻辑,绑定了store中的数据与要作dispatch动作。对Redux来说,它不管呈现组件的事,只管容器组件的事。

如果嵌套在很深的展示组件内,怎么去实现一个容器组件?

用了react-redux绑定套件,利用Provider作为最上层组件,props可以穿透于树结构的各子组件之中(靠的是React中的Context特性)。Redux原本就有不同组件间沟通的能力,这与组件所在位置有多深无关,只要是在同一个树状结构下,必定可以绑定到store中的数据与dispatch动作,这也是要用Redux框架的目的。

先明确一下定义:

容器组件(Container Component)是指使用了 react-reduxconnectstore 订阅了 state 的组件。

Provider 包起来的应该叫 Redux AppApp 是可以切分多个的,但是我想你的应用应该还没有复杂到这个程度。你想问的应该是 Container Component 是否可以嵌套。

答案是当然可以。

另外一般情况下是一个简单的页面就一个 Container Component,但是会基于页面复杂度、不同业务逻辑区块、性能等问题把一个页面切分成多个 Container Component

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