美文网首页
React 的Provider、Consumer的使用

React 的Provider、Consumer的使用

作者: 莫伊剑客 | 来源:发表于2021-03-16 09:19 被阅读0次

Provider、Consumer的官方文档

Provider、Consumer都是组件,Provider是数据的发出者,Consumer是数据的接收者,多用于第三方组件封装中。

简单介绍Provider、Consumer的使用

第一步建立context.js文件

import {createContext} from 'react'
// Provider,Consumer来源于同一个createContext()
const {Provider,Consumer} = createContext();
export {
  Provider,
  Consumer
}

第二步Provider的使用,Provider组件接受一个value属性,值可以是字符串也可以是对象等。

import React, {Component} from 'react'
import Child from './children'
import {Provider} from "./context";

// 类组件
class App extends Component {
  constructor(props) {
    super(props)
    this.state = {
      name: 'aa'
    }
  }

  render() {
    const {data} = this.props
    const {name}=this.state
    return (<div>
      <Provider value={data}>
        {
          data.map((item, index) => {
            return <div key={index}>
              <p>{item}</p>
            </div>
          })
        }
        <Child/>
      </Provider>
    </div>)
  }
}

export default App

第三步Consumer的使用 Consumer组件内可以通过匿名函数的形式接收Provider传过来的数据

import React, {Component} from 'react'
import {Consumer} from "./context";

export default class Child extends Component {
  constructor(props) {
    super(props)
    this.state = {
      name: 'll'
    }
  }
  render() {
    console.log(3, '组件渲染虚拟dom')
    return (<Consumer>{
      // 接收Provider传过来的数据
      (data) => {
        console.log(data)
      }
    }</Consumer>)
  }
}

相关文章

网友评论

      本文标题:React 的Provider、Consumer的使用

      本文链接:https://www.haomeiwen.com/subject/gidscltx.html