context的使用

简介: context的使用

概念


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

应用开发过程中,一般不会使用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()的使用
70 0
|
Java 应用服务中间件
严重: Exception sending context destroyed event to listener instance of class org.springframework.web.
严重: Exception sending context destroyed event to listener instance of class org.springframework.web.
301 0
严重: Exception sending context destroyed event to listener instance of class org.springframework.web.
|
前端开发
Context的用法
一种组件间通信方式,常用于【祖组件】与【后代组件】间通信 应用开发过程中,一般不会使用context,一般都用它封装react插件
|
存储 缓存 Android开发
Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
一、基础知识 应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
1907 0
|
存储 缓存 安全
为什么不能使用 Application Context 显示 Dialog?
为什么不能使用 Application Context 显示 Dialog?
为什么不能使用 Application Context 显示 Dialog?
|
Android开发
Android之Context 和 application context
Android之Context 和 application context
189 0
Android之Context 和 application context
|
缓存 Java API
另外,context:component-scan配置可以有多个。
本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能。在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存。
|
Android开发 安全 开发工具
|
Java Android开发
NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet...
学自定义View嘛,刚刚少些个重载构造函数,结果。。。 07-30 03:05:30.862 6924-6924/com.
1488 0
|
Android开发 开发工具