内容简介:看到网上都是老版的context,发一篇最新的context的使用及小例子。Context接收一个
看到网上都是老版的context,发一篇最新的context的使用及小例子。
Context 通过组件树提供了一个传递数据的方法,从而避免了在每一个层级手动的传递 props 属性。在一个典型的 React 应用中,数据是通过 props 属性由上向下(由父及子)的进行传递的,但这对于某些类型的属性而言是极其繁琐的(例如:地区偏好,UI主题),这是应用程序中许多组件都所需要的。 Context 提供了一种在组件之间共享此类值的方式,而不必通过组件树的每个层级显式地传递 props 。
引入
const {Provider, Consumer} = React.createContext(defaultValue);
-
创建一对
{ Provider, Consumer }
。当 React 渲染 context 组件 Consumer 时,它将从组件树的上层中最接近的匹配的 Provider 读取当前的 context 值。如果上层的组件树没有一个匹配的 Provider,而此时你需要渲染一个 Consumer 组件,那么你可以用到defaultValue
。这有助于在不封装它们的情况下对组件进行测试。 - defaultValue可以书写默认传递的值
Provider
<Provider value={/* some value */}>
接收一个 value
属性传递给 Provider 的后代 Consumers。一个 Provider 可以联系到多个 Consumers。Providers 可以被嵌套以覆盖组件树内更深层次的值。
Consumer
<Consumer> {value => /* render something based on the context value */} </Consumer>
接收一个 函数作为子节点. 函数接收当前 context 的值并返回一个 React 节点。传递给函数的 value
将等于组件树中上层 context 的最近的 Provider 的 value
属性。如果 context 没有 Provider ,那么 value
参数将等于被传递给 createContext()
的 defaultValue
。
代码小例:
import React,{Component} from 'react' const {Provider, Consumer} = React.createContext() class Father extends Component{ constructor (props){ super(props) this.state={ money:25 } } render(){ return ( <Provider value={this.state}> <div> <h2>爸爸的钱:{this.state.money}</h2> <A></A> </div> </Provider> ) } } class A extends Component{ render(){ return ( <Consumer> {value=><Son value={value} ></Son>} </Consumer> ) } } class Son extends Component{ render(){ console.log(this.props.value.money) return( <div> {this.props.value.money} </div> ) } } export default Father
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-05/158791.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- C++ 值传递、指针传递、引用传递详解
- 简明笔记:指针传递和值传递
- golang中的函数参数值传递和引用传递
- 现代编程语言的值传递与引用传递
- 这一次,彻底解决Java的值传递和引用传递
- Python函数中参数是值传递,还是引用传递?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。