1、 父组件 -> 前几层子组件: props2. 父组件 -> 非常深入的子组件(比如从最顶层到第5层以后): context这种情况几乎很少见,除非写框架或者工具,最好是只用props,清晰明了。
2、 子组件 -> 父组件:callback4. 子组件时间: 严格意义上不存在这种情况,如果出现这样的需求,说明你的写法是错误的,数据的流向始终都应该是从顶至下。例如root -> (A,B,C) 所以A组件改变,需要让B改变时,A调用root以props传来的callback从而导致root的state发生变化,这样B就能得到更新。
3、当APP复杂的可能特殊情况:在使用pureRenderMixin来提升渲染速度的时候,非常里层的子组件需要一些参数来计算显示的值,但是你又不需要当这个值改变的时候重新渲染这个组件而且也不想用context的时候, 在Root中定义this.getAllState= () =>
4、this.state, 然后将这个getAllState作为props传递给子组件; 这种情况很少出现,慎用。
5、使用某种Flux,让局部组件链接一个自己的store,同时接受来自父组件的各种callback props, 通过这些callback实现 小组件的store改变时,通知父组件。