Context的用法

简介: 一种组件间通信方式,常用于【祖组件】与【后代组件】间通信应用开发过程中,一般不会使用context,一般都用它封装react插件

概念



一种组件间通信方式,常用于【祖组件】与【后代组件】间通信

应用开发过程中,一般不会使用context,一般都用它封装react插件


示例



//1 创建Context容器对象:
cosnt XxxContext = React.createContext();
// 2 渲染子组件时,外面包裹XxxContext.provider,通过value属性给后代组件传递数据:
<xxxComponent.Provider value={数据}>
  子组件
</xxxComponent.Provider>
// 3 后代组件读取数据
// 写法一 
// 特点:简便、主要用在类组件
static contextType = xxxContext  //声明接收context
this.context //读取context中的value数据
// 写法二
// 特点:不需要this、可以接收多个context、主要用在函数组件
<xxxContext.Consumer>
  {
    value=>( //value就是context中的value数据
      要显示的内容
    )
  }
</xxxContext.Consumer>


实际应用



import React, { Component } from 'react';
// 创建Context对象
const MyContext = React.createContext()
const { Provider, Consumer } = MyContext;
class A extends Component {
  state = {
    name: 'tom',
    age:15
  }
  render() {
    const {name,age}= this.state
    return (
      <div>
        <h2>组件A</h2>
        <Provider value={{name,age}}>
          <B/>
        </Provider>
        <hr />
      </div>
    );
  }
}
class B extends Component {
  render() {
    //  console.log(this)
    return (
      <div>
         <hr />
        <h2>组件B</h2>
        <C/>
      </div>
    );
  }
}
// class C extends Component {
// // 声明接收
// static contextType = MyContext
//   render() {
//     const { name, age } = this.context;
//     return (
//       <div>
//          <hr />
//         <h2>组件C</h2>
//         <p>{name}-------{age}</p>
//       </div>
//     );
//   }
// }
function C (){
    return (
      <div>
         <hr />
        <h2>组件C</h2>
        <p>
          <Consumer>
            {(value)=>(`${value.name}--------${value.age}`)}
          </Consumer>
        </p>     
      </div>
    )  
}
export default A;


相关文章
|
缓存 Go
context.WithCancel()的使用
context.WithCancel()的使用
73 0
|
2月前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
32 1
|
5月前
|
JavaScript 前端开发 测试技术
手写call , apply , bind 方法的实现
本文通过实例讲解了JavaScript中`call`、`apply`及`bind`方法的用途与实现。以`call`为例,展示了如何改变函数内的`this`指向,并立即执行该函数。通过在`Function.prototype`上定义`myCall`,利用`Symbol`确保新增属性的唯一性,从而避免命名冲突。接着介绍了如何处理不定数量的参数传递,最终实现了自定义的`myCall`方法。随后简述了`apply`与`call`的区别,并展示了其实现方式,主要在于参数传递形式的不同。最后,通过`bind`方法创建了一个返回新函数的例子,该新函数具有固定的`this`上下文,同时支持分批参数传递。
39 2
手写call , apply , bind 方法的实现
|
存储 缓存 Dart
Dart中的factory关键字用法
Dart中的factory关键字用法
odoo context上下文用法总结
odoo context上下文用法总结
281 0
|
前端开发
context的使用
context的使用
|
IDE Java Go
tools:context用法
tools:context用法
560 0
|
Android开发 安全 开发工具