2.Provider的实现方式。
在我们在调用Provider时,采用的是以下的方式:
const store = createStore(reducer)
render(
document.getElementById('root')
);
a.首先我们看到的是先创建store对象;
b.然后将store传递给Provider;
c.然后将应用组件做为Provider的子组件。
不过问题又来了:我们并没有看到Provider将store作为props传递给子组件啊。
Provider是通过getChildContext的的方式传递给子组件的,并且我们也在connect中看到子组件取数据的过程:constructor(props, context) {
super(props, context)
this.version = version
this.store = props.store || context.store
.......
}
在没有定义props的情况下,通过context直接取得store中的数据,或者说取得context中的数据。而常见的场景一般如下:
看来Provider的实现原理,也就知道了它的封装过程和方法,也能更加灵活的运用了。
