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;


相关文章
|
11月前
|
缓存 Go
context.WithCancel()的使用
context.WithCancel()的使用
50 0
odoo context上下文用法总结
odoo context上下文用法总结
221 0
|
前端开发
context的使用
context的使用
|
存储 缓存 Android开发
Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
一、基础知识 应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
1870 0
|
Kotlin
【错误记录】布局组件加载错误 ( Attempt to invoke virtual method ‘xxx$Callback android.view.Window.getCallback()‘ )
【错误记录】布局组件加载错误 ( Attempt to invoke virtual method ‘xxx$Callback android.view.Window.getCallback()‘ )
295 0
|
缓存 Java API
另外,context:component-scan配置可以有多个。
本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能。在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存。
|
IDE Java Go
tools:context用法
tools:context用法
530 0
|
Android开发 安全 开发工具
require.context 基本用法
`require.context`函数接受三个参数 - directory {String} -读取文件的路径 - useSubdirectories {Boolean} -是否遍历文件的子目录 - regExp {RegExp} -匹配文件的正则 ``` 语法: require.
1182 0
|
Android开发 开发工具