06.React组件进阶(二)Context

Context

作用:跨组件传递数据(比如主题,语言等)

使用步骤:

1.使用Reat.creatContext()创建Provider(提供数据和 Consumer(消费数据) 两个组件

const {Provider,Consumer} = React.createContext()

2.使用Provider组件作为父节点

<Provider>
    <div className="App">
        <Child1 />
    </div>
</Provider>

3.使用value属性,表示要传递的数据

<Provider value="pink">

4.使用Consumer 组件接收数据

<Consumer>
    {data => <span>data参数表示接收到的数据---data</span>}
</Cpnsumer>
//2.接收数据
//创建Context得到两个组件
const {Provider,Consumer} = React.createContext()
//父组件
class App extends React.Component{
    render(){
        return(
            <Provider value="pink">
                <div className="app">
                  <Node/>
                 </div>
            </Provider>
        )
    }
}
//子组件
const Node = props => {
    return (
        <div className="node">
            <SubNode/>
        </div>
    )
}

const SubNode = props =>{
    return (
        <div className="subNode">
            <Child/>
        </div>
    )
}

const Child = props =>{
    return (
        <div className="child">
            <Consumer>
    {data =><span>我是子节点--{data}</span>}
            </Consumer>
        </div>
    )
}
//1.传递数据
ReactDOM.render(<App/>,document.getElementById('root'))

总结

1.如果两个组件是远方亲戚(比如,嵌套多层)可以使用Context实现组件通讯
2.Context提供了两个组件:Provider 和 Consumer
3.Provider组件:用来提供数据
4.Consumer组件:用来消费数据

原文地址:https://www.cnblogs.com/foreverLuckyStar/p/12246775.html

时间: 2024-07-30 15:17:34

06.React组件进阶(二)Context的相关文章

07.React组件进阶(二)Props 深入

props 校验 //1.对于组件来说,props是外来的,无法保证组件使用者传入什么格式的数据 //2.如果传入的数据格式不对,可能会导致组件内部报错 //3.关键问题:组件的使用者不知道明确的错误原因 //4.props 校验:允许在创建组件的时候,就指定props的类型,格式等 App.propTypes = { colors:PropTypes.array } //5.作用:捕获使用组件时因为props 导致的错误,给出明确的错误提示,增加组件的健壮性 使用步骤 1.安装包 prop-t

react初探(二)之父子组件通信、封装公共组件

一.前言 在组件方面react和Vue一样的,核心思想玩的就是组件,下面举两个组件常用的情景. 场景一:假如我们现在有一个页面包含表格以及多个弹框,这种时候如果将这个页面的业务代码写在一个组件中,那么这一块的代码会看着非常恶心.如果这个时候我们将这个页面的表格以及弹框这些单独的模块分别写成组件的形式,然后再在这个页面中将这些组件引入进来,那样我们的代码会看着非常整洁.这样做会需要使用到父子组件之间的通信,下面会详细解释. 场景二:日常项目中我们会经常遇到某一个功能会在不同地方使用,但是每次使用的

二、React初体验之React组件创建

(中间因为应付各种考试,处理其他事情,隔了好时间没更新,现在终于有时间了,续上!) 本文为React初始体验,因此先不考虑文件如何组织,尽量以最简单的方式让大家了解React其中的原理. 在创建组件(component)之前,大家首先需要了解一些基础知识.有ES6.JSX语法等基础知识的同学请跳过下面一段. ES6是JavaScript的最新标准,里面新增了许多语法方式,甚至出现了“类”的继承方式,我个人暂且把他们理解为新增了许多“语法糖”,这些“语法糖”可能带给老手的是方便,而对于我们这些菜鸟

React组件通信的几种方式

需要组件之进行通信的几种情况? 父组件向子组件通信?? 子组件向父组件通信?? 跨级组件通信?? 没有嵌套关系组件之间的通信? 1. 父组件向子组件通信React数据流动是单向的,父组件向子组件通信也是最常见的;父组件通过props向子组件传递需要的信息?Child.jsximport?React?from?'react';import?PropTypes?from?'prop-types';export?default?function?Child({?name?})?{????return?

如何写好react组件

react 组件方面: 总结 React 组件的三种写法 及最佳实践 [涨经验] React组件编写思路(一) 使用react-router实现单页面应用时设置页面间过渡的两种方式 [翻译]基于 Create React App路由4.0的异步组件加载(Code Splitting) React进阶--使用高阶组件(Higher-order Components)优化你的代码 Higher-order Components 高阶组件 redux方面: Redux-saga 中文文档 https:

Android UI组件进阶(2)——仿Windows对话框

Android UI组件进阶(2)--仿Windows对话框 在开始本章前先祝大家中秋节快乐哈,相信很多上班的朋友都是放三天假的哈! 有时间的话回家陪陪父母吧!树欲静而风不止,子欲养而亲不待!岁月不饶人! 好了,道理和祝福语就说到这里了,今天给大家准备的是模仿Windows风格对话框! 效果图: 相信大部分的AlertDialog都是下面这个样子的: 今天给大家讲解的对话框是下面这样的: 对比两种对话框,站在用户的角度,相信你更加钟情于第二种颜色鲜明的对话框 好了下面就开始讲解如何制作模仿win

React 组件之间如何交流

原文  http://blog.51yuekan.com/2015/07/23/2015-07-19-react-component-communicate/ 主题 React 前言 今天群里面有很多都在问关于 React 组件之间是如何通信的问题,之前自己写的时候也遇到过这类问题.下面是我看到的一篇不错英文版的翻译,看过我博客的人都知道,我翻译可能不会按部就班,会尽可能用中文的意思,来将作者要讲述的技术描述清楚.英文能力有限,如果有不对的地方请跟我留言,一定修改--^_^ 原著序 处理 Rea

封装react组件——三级联动

思路: 数据设计:省份为一维数组,一级市为二维数组,二级市/区/县为三维数组.这样设计的好处在于根据数组索引实现数据的关联. UI组件: MUI的DropDownMenu组件或Select Field组件.将省市县数据定位常量,在UI组件里引用,通过数组遍历. 数据设计代码:(鉴于数据比较多,只列举部分) provinceData.js /********** 省级数据 **********/ export const provinces =['安徽省','澳门特别行政区','北京']; /**

#003 React 组件 继承 自定义的组件

主题:React组件 继承 自定义的 组件 一.需求说明 情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属性,怎么办? [和 面向对象的语言,C#,Java 的基类 思想是 一样的] 如果公用的东西,是一些方法,可以 使用 React 的 Mixins(ES5) ,高阶组件(ES6)[高阶函数不太了解,如何使用,去找下资料 ] 但是如果有公用的属性,那么就有点 力不从心了 在想,React 中,是否可用