1.context.js
作为文件之间传递的一个中间的文件,可以简单的理解为交互的文件
先要生成一个context 并且导出供组件使用
import react from 'react'
const Context = react.createContext()
export default Context;2.父组件
在父组件中导入创建好的context.js
给需要数据的子组件用<context.Provider value={{name:'feifei'}}></ context.Provider> 包裹
并且通过value传值
import React, { Component } from 'react';
import context from './../../context/index'
import Son from './son.js'
class Father extends Component {
state = {
data:'1111'
}
updateName= ()=>{
this.setState({data:'feifei'})
}
render() {
return (
<div onClick={this.updateName}>
这是父组件{this.state.data}
<context.Provider value={{name:this.state.data}}>
<Son></Son>
</context.Provider>
</div>
);
}
}
export default Father;3.子组件(方式一)
在子组件中也需要导入创建好的context.js
并且在需要的子组件中用context.属性获取数据
在子组件中要用回调的方式接收数据
中间不管经过多个组件只要是子组件都可以使用Consumer包裹接收数据
import React, { Component } from 'react'; import context from './../../context/index.js' class Son extends Component { render() { return ( <context.Consumer> {context => { return ( <div> name:{context.name} </div> ) }} </context.Consumer> ); } } export default Son;4.子组件(方式二)
子组件也可以采用另外一种方式获取context上的数据
使用contextType的方式
import React, { Component } from 'react';
import context from './../../context/index.js'
class Son1 extends Component {
static contextType = context;
render() {
return (
<div>这是son1{this.context.name}</div>
)
}
}
export default Son1;版权声明:本文为qq_61027269原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。