现在是很深的展示组件,发现很多从根组件传过来的props并不需要,就想把现在的展示组件变成容器组件,一般容器组件是存在根组件里面的,如下被Provider包裹起来,并且是一个store,如果嵌套在很深的展示组件内,怎么去实现一个容器组件?
<Provider store={store}>
</Provider>
现在是很深的展示组件,发现很多从根组件传过来的props并不需要,就想把现在的展示组件变成容器组件,一般容器组件是存在根组件里面的,如下被Provider包裹起来,并且是一个store,如果嵌套在很深的展示组件内,怎么去实现一个容器组件?
<Provider store={store}>
</Provider>
概略说明Redux中的容器组件与呈现组件,只是Redux自己作的区分,类似的区分方式还有很多,像智慧组件与笨组件、有状态与无状态组件、实际上只是为了说明不同的组件作的事的分隔而已。呈现组件就作显示用,里面没有用react-redux的绑定逻辑而已,对React来说只是个组件,通常是个无状态的函数型组件。不用太拘泥于这个区分法,用久了就习惯知道了。容器组件一般而言则是有状态的组件,里面会用了react-redux的绑定逻辑,绑定了store中的数据与要作dispatch动作。对Redux来说,它不管呈现组件的事,只管容器组件的事。
如果嵌套在很深的展示组件内,怎么去实现一个容器组件?
用了react-redux绑定套件,利用Provider作为最上层组件,props可以穿透于树结构的各子组件之中(靠的是React中的Context特性)。Redux原本就有不同组件间沟通的能力,这与组件所在位置有多深无关,只要是在同一个树状结构下,必定可以绑定到store中的数据与dispatch动作,这也是要用Redux框架的目的。
先明确一下定义:
容器组件(Container Component)是指使用了 react-redux
的 connect
从 store
订阅了 state
的组件。
用 Provider
包起来的应该叫 Redux App
。App
是可以切分多个的,但是我想你的应用应该还没有复杂到这个程度。你想问的应该是 Container Component
是否可以嵌套。
答案是当然可以。
另外一般情况下是一个简单的页面就一个 Container Component
,但是会基于页面复杂度、不同业务逻辑区块、性能等问题把一个页面切分成多个 Container Component
。
1 回答1.7k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
4 回答1.3k 阅读
1 回答1.6k 阅读✓ 已解决
之前我也有这个疑问,但是在看官方demo的时候,发现 展示组件可以嵌套 容器组件,但是官方文档没找到

有图有真相