React数据传递---context
state是在constructor当中定义,并且用来传值,props是在引用其它组件中定义,并且在其组件中调用,
context是在组件中定义一个函数,并且把它放在引用的组件中,供其后面的组件来调用它,当然那个时候就又变成props的概念了
state 、props 、context 都是React传值的数据的引用,并且都是单向的。
上下文的精髓是可以跨级传递数据,爷爷组件可以直接传递数据到孙子组件。
语法比较晦涩:
app/Yeye.js
app/Baba.js 里面虽然发生了事,但是被我注释了,因为要测试孙子有没有接受到爷爷传的值
app/Sunzi.js
React会将上下文当做构造函数的第二个参数传入:
结论:
(1)当祖先元素中更改了上下文的数据,此时所有的子孙元素中的数据都会更改,视图也会更新
(2)反之不成不立,可以认为上下文的数据字啊子孙元素中是只读的。此时又要需要使用奇淫技巧,就是在context*享一个操作祖先元素的函数,子孙元素通过上下文获得这个函数,从而操作祖先元素的值.
也就是说,state是自制的不涉及传值的事儿:props是单向的,父亲----->儿子:context也是单向的,祖先---->后代,如果要反向,就要传入一个函数。
app/Yeye.js
app/Sunzi.js
context很少用,传值基本用props。除非特别深的跨级别传值,可以用context