美文网首页
初识Context

初识Context

作者: 木易先生灬 | 来源:发表于2020-10-09 17:06 被阅读0次

    初识Context
    我们知道,在JS中context指的是函数的执⾏上下⽂,函数被调⽤时,this指向谁,谁就是当前的执⾏上下⽂;
    react中的context是什么呢?官⽅⽂档给出:
    Context 通过组件树提供了⼀个传递数据的⽅法,从⽽避免了在每⼀个层级⼿动的传递 props 属性。
    ⽂档也没具体给出context到底是什么,⽽是告诉我们context能⼲什么,也就是说,如果我们不想通过props实现组件树的逐层传递
    数据,则可以使⽤context实现跨层级进⾏数据传递!
    如何使⽤Context
    context api给出三个概念:React.createContext()、Provider、Consumer;
    React.createContext()
    这个⽅法⽤来创建context对象,并包含Provider、Consumer两个组件 <Provider />、<Consumer />
    const {Provider, Consumer} = React.createContext();
    Provider
    数据的⽣产者,通过value属性接收存储的公共状态,来传递给⼦组件或后代组件
    eg:
    <Provider value={/* some value /}>
    Consumer
    数据的消费者,通过订阅Provider传⼊的context的值,来实时更新当前组件的状态
    eg:
    <Consumer>
    {value => /
    render something based on the context value */}
    </Consumer>
    值得⼀提的是每当Provider的值发⽣改变时, 作为Provider后代的所有Consumers都会重新渲染
    props单向数据流动:
    如果觉得Props传递数据很繁琐,可以采⽤context,进⾏跨组件传递数据
    再最外层的组件上,通过⽣产者Provider组件进⾏包裹,并存储共享数据到value中,当然可以是任何数据类型。后带需要⽤到共享数
    据的组件均可通过Consumer进⾏数据获取。

    相关文章

      网友评论

          本文标题:初识Context

          本文链接:https://www.haomeiwen.com/subject/uyglpktx.html