亚游wwwag8com
你好,游客 登录 注册
背景:
阅读新闻

react新更新的context传递数据

[日期:2019-05-21] 来源:Linux社区  作者:frontEndJie [字体: ]

亚游wwwag8com,  我们知道蒋总您是专业人士,您能预测到专业发展的趋势。您是西锐中国区的首席代表,您也是一位飞行爱好者,有航空证书。在中国,像我这样的普通人都有航空梦,但是实现得很少。今天借这样的机会,您给我们介绍一下,您有航空梦的时候是怎样实现的?

  另外,两位专家一致强调,根据我国的相关法律法规,产妇分娩后胎盘应当归产妇所有。产妇放弃或者捐献胎盘的,可以由医疗机构进行处置,任何单位和个人不得胎盘。外媒:印度将成最危险的超级细菌“孵化器”宋慈去世前两年,将苦心编著的《洗冤集录》自刻成书,全书以7万余字记述了人体解剖、检验尸体、勘查现场、鉴定死伤原因、自杀或谋杀等各种现象,提供鉴别溺死、自缢与假自缢、自刑与杀伤、火死与假火死的方法,还列明毒物以及如何解毒急救的要诀。

看到网上都是老版的context,发一篇最新的context的使用及小例子。

Context 通过组件树提供了一个传递数据的方法,从而避免了在每一个层级手动的传递 props 属性。在一个典型的 React 应用中,数据是通过 props 属性由上向下(由父及子)的进行传递的,但这对于某些类型的属性而言是极其繁琐的(例如:地区偏好,UI主题),这是应用程序中许多组件都所需要的。 Context 提供了一种在组件之间共享此类值的方式,而不必通过组件树的每个层级显式地传递 props 。

引入

const {Provider, Consumer} = React.createContext(defaultValue);
  1. 创建一对 { Provider, Consumer }。当 React 渲染 context 组件 Consumer 时,它将从组件树的上层中最接近的匹配的 Provider 读取当前的 context 值。如果上层的组件树没有一个匹配的 Provider,而此时你需要渲染一个 Consumer 组件,那么你可以用到 defaultValue 。这有助于在不封装它们的情况下对组件进行测试。
  2. 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地址亚游wwwag8com/wwwd35clinuxidcd35ccom/rssFeed.aspx

本文永久更新链接地址/wwwd35clinuxidcd35ccom/Linux/2019-05/158791.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
这种网红减肥产品掺有禁药 已有10吨流入市场 曼联正式行动开抢6500万铁闸 穆帅点名要买此人 刚满月的男婴跟父母同睡一床没了呼吸 别这样做了 复盘富力胜一方:斯帅中场奇招制胜 一方起色明显 陈艾森克服波动 携张家齐获跳水世界杯入场券 中菲友好带火房地产?要在菲买房的中国人这样说 38亿买981个微信公众号 瀚叶股份董事长:估值合理 西班牙一艘旅游双体船起火 5人受伤 摩拜疑似出现大规模故障 扫码后押金余额等清零 GTHFX金钻集团:贸易战忧虑稍减 金价退守1320关 足协开罚单:王军辉司徒华龙禁赛10个月 各罚20万 王室大婚谁牵梅根走红毯?肯辛顿宫:王储查尔斯
中央广播电视总台展示区亮相中国国际影视节目展 欧委会主席:欧美商定就取消工业品关税进行合作 特蕾莎-梅:欧盟给的脱欧草案 没有哪个首相会同意 塔吉克斯坦和俄罗斯举行大规模军事演习:4万多人参演 马斯克:特斯拉每周生产2000辆Model 3 皇马没C罗连球都不会踢了 这状态拿什么赢利物浦 上海书记点赞驻沪部队 出席庆祝建军91周年座谈会 李妍憬开记者会痛哭:被戴手铐遭脱光搜身 富力高层:新援将起到补丁作用 需要完善防守体系 土耳其称已对叙利亚阿夫林城区形成包围之势 4.9万人3月跑郑开马拉松 跑友将获专属奖牌 足协杯-孙国文传射冯伯元伤退 大连4-1胜辽足晋级
余额宝T+0赎回日额度5万降至1万 土耳其回应美国制裁威胁:不接受华盛顿口头恐吓 手机爆炸致女童烧伤毁容 家属诉三星索赔169万元 奥沙利文期待决赛战丁俊晖:塞尔比将会磨死我! 杜震宇:不在亚泰就算拥有世界也没有任何意义 华为董事长梁华:云已经不是战略问题 而是战术问题 卡尼是怎样从“不靠谱男友”修炼成“暴躁老公”的 耶拉维奇:本场比赛让我们重树信心 希望成转折点 中国公民赴阿塞拜疆未办登记遭罚款 中使馆发提醒 韩方:金永南访韩体现“平壤改善南北关系的意愿” 球哥伤情又反复?他感觉膝盖里有东西是咋回事 中国因萨德赴韩游客数遭腰斩 韩国旅游业要哭 台当局官员访日行程低调 台媒:为避免大陆“干扰” 亚游wwwag8com