zoukankan      html  css  js  c++  java
  • React里面的Context应用示例

    // 1. 创建上下文  createContext()
    
    import React, { Component } from 'react';
    
    const Context = React.createContext();
    
    const store = {
        name: '小毛',
        sayHi(){
            console.log(this.name)      
        }      
    }
    
    export default ContextSample extends Component{
        render(){
            return(
                <div>
                    <Context.Provider value={store}>
                        <div>
                            <Context.Consumer>
                                { /* 必须要一个函数 */}
                                { 
                                    value => <div onClick={() => value.sayHi()}>{value.name}</div> 
                                 }
                              </Context.Consumer>
                         </div> 
                       </Context.Provider>
                   </div>
               )
            }   
    }                                                    
    

      

    <Context.Provider> 和 <Context.Consumer> 那样定义着写在那里,看着有点别扭。可以定义装饰器来渲染

    const withProvider = Comp => props => (
        <Context.Provider value={store}>
          <Comp {...props} />
        </Context.Provider>
    )
    
    const withConsumer = Comp => props => (
      <Context.Consumer>
        { value => <Comp {...props} value={value} /> }
      </Context.Consumer>
    )
    

     然后调用装饰器,修改代码

    @withConsumer
    class Inner extends Component{
      render(){
        return <div onClick={() => this.props.value.sayHi()}> { this.props.value.name } </div>
      }
    }
    
    @withProvider
    class ContextSample extends Component {
      render() {
        return (
          <div>
            <Inner />
          </div>
        )
      }
    }
    
    export default ContextSample;
    

     

    React的context是vuejs的provide&inject的来源,由高层组件向底层组件传值

  • 相关阅读:
    Typora的使用
    selenium中webdriver提供的八大定位元素方法
    JAVA的Data和Timestamp的相互转换
    Jmeter设置参数作为断言依据
    Springboot +Poi 导入Excel表格
    window.location.reload();
    带参数的链接跳转
    Layui结束时间不能小于开始时间
    后台返回数据渲染Layui表格
    Layui中layedit模板的使用
  • 原文地址:https://www.cnblogs.com/Xmforever/p/10323150.html
Copyright © 2011-2022 走看看