也可直接阅读官方文档 https://reactjs.org/docs/context.html
旧版本使用方式 getChildContext
import React from 'react';import PropTypes from 'prop-types';import './App.css';class Child extends React.Component{static contextTypes = {a: PropTypes.number}render(){console.log(this.context,'Child')return <div />}}// props: color : stirngexport default class App extends React.Component{static childContextTypes= {a: PropTypes.number}getChildContext(){return {a:1}}render(){return (<div><Child /></div>)}}
不再建议这样使用,react17版本会正式弃用这种使用方式。
新版使用方式 CreateContext
import React, { createContext } from 'react';import './App.css';export const myContext = createContext({a:2});class Child extends React.Component{static contextType = myContextrender(){console.log(this,'Child')return <div> {this.context?.a} <div>}}class App extends React.Component{render(){return (// 如果打开下面的注释,那么Child中的this.context取值为 {a:4},即Provider的value值// 现在取的是默认值,即 {a: 2}// <myContext.Provider value={{a:4}}><Child />// </myContext.Provider>)}}export default App;
注意,允许创建多个context,具体组件中的 this.context 由 static contextType 决定。
需要更新context的话,直接用
