react中的context怎么用

context可以用来做父组件向子组件或爷爷组件向孙子组件传参,
注意,数据流是单向的,子组件无法传给父组件

用法:

  1. 在父组件MyComponent组件中
const AContext = React.createContext(初始值)
function MyComponent(){ 
    render (){
        <AContext.provider value={this.state}> //可以传一个对象
            <B></B>
         </AContext.provider>
    }
}
  1. const AContext = React.createContext(初始值)//这里的初始值类似于useState的初始值,可以传空值
  <AContext.provider value={this.state}> //可以传一个对象
      <B></B>
  </AContext.provider>
  1. 这时如果B组件中又包含子组件C,可以不必指明需要往下传递的数据了,C将默认获取到
    子组件B组件
function  B(){
    return(
        <C></C>
    );
}
  1. 指定contextType读取当前的context value,React将往上层找到最近的Provider
    孙子组件C组件中
    从父组件MyComponent组件中引入AContext
function  C(){
        static contextType = AContext;
        render (){
            return <Button theme={this.context}> //theme值即为父组件MyComponent组件中的this.state
        }
}

相比props和state,React的Context可以实现跨层级的组件通信

https://zhuanlan.zhihu.com/p/110331535
https://zh-hans.reactjs.org/docs/context.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值