详解react组件通讯方式(多种)


Posted in Javascript onMay 06, 2020

1、父组件向子组件传值

父组件向子组件传值一般采用props属性传递

父组件:

import React from 'react'
import Child from './Child'

const dataList = [
 { id: '001', value: '张三' },
 { id: '002', value: '李四' }
]

const Parent = props => {
 return (
  <ul>
   <Child dataList={dataList}></Child>
  </ul>
 )
}

export default Parent

子组件:

import React from 'react'

const Child = props => {
 return (
  <React.Fragment>
   {
    props.dataList.map(item => <li key={item.id}>{item.value}</li>)
   }
  </React.Fragment>
 )
}

export default Child

详解react组件通讯方式(多种)

2、子组件向父组件传值

子组件调用父组件传过来的回调函数来更改父组件的state

父组件

import React, { useState } from 'react'
import Child from './Child'

const Parent = props => {
 const [count, setCount] = useState(0)

 return (
  <Child count={count} setCount={setCount}></Child>
 )
}

export default Parent

子组件

import React from 'react'

const Child = props => {
 return (
  <React.Fragment>
   <button onClick={() => {props.setCount(props.count-1)}}>-</button>
   <span>{props.count}</span>
   <button onClick={() => {props.setCount(props.count+1)}}>+</button>
  </React.Fragment>
 )
}

export default Child

详解react组件通讯方式(多种)

3、跨级组件传值(祖孙组件)

context是一个全局变量,像是一个大容器,在任何地方都可以访问到,我们可以把要通信的信息放在context上,然后在其他组件中可以随意取到;
但是React官方不建议使用大量context,尽管他可以减少逐层传递,但是当组件结构复杂的时候,我们并不知道context是从哪里传过来的;而且context是一个全局变量,全局变量正是导致应用走向混乱的罪魁祸首.

父组件

import React, { useState } from 'react'
import Child from './Child'

export const MyContext = React.createContext('hello')

const Parent = props => {
 return (
  <MyContext.Provider value="world">
   <Child />
  </MyContext.Provider>
 )
}

export default Parent

子组件

import React from 'react'
import Son from './Son'

const Child = props => {
 return (
  <Son />
 )
}

export default Child

孙组件

import React from 'react'
import { MyContext } from './Parent'

export default class Son extends React.Component {
 render() {
  return (
   <MyContext.Consumer>
    {
     context => <div>{context}</div>
    }
   </MyContext.Consumer>
  )
 }
}

详解react组件通讯方式(多种)

参考:
https://blog.csdn.net/xingfuzhijianxia/article/details/86151243
https://www.cnblogs.com/qinney1109/p/11202085.html

到此这篇关于详解react组件通讯方式的文章就介绍到这了,更多相关react组件通讯内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript入门教程(2) JS基础知识
Jan 31 Javascript
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
基于javascript html5实现多文件上传
Mar 03 Javascript
第十篇BootStrap轮播插件使用详解
Jun 21 Javascript
DOM事件探秘篇
Feb 15 Javascript
详解vue-meta如何让你更优雅的管理头部标签
Jan 18 Javascript
jQuery实现开关灯效果
Aug 02 jQuery
创建与框架无关的JavaScript插件
Dec 01 Javascript
Node.js API详解之 os模块用法实例分析
May 06 #Javascript
js实现无缝轮播图特效
May 09 #Javascript
js实现上传按钮并显示缩略图小轮子
May 04 #Javascript
js代码实现轮播图
May 04 #Javascript
原生js实现轮播图特效
May 04 #Javascript
jquery实现手风琴案例
May 04 #jQuery
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
May 03 #Javascript
You might like
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
Python for循环与range函数的使用详解
2019/03/23 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
行政专员岗位职责
2014/01/02 职场文书
教师研修随笔感言
2014/01/23 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书