详解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 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
javascript 自动填写表单的实现方法
Apr 09 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
Dec 25 Javascript
超简单JS二级、多级联动的简单实例
Feb 18 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
JS中frameset框架弹出层实例代码
Apr 01 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
vue proxy 的优势与使用场景实现
Jun 15 Javascript
JavaScript实现移动端拖动元素
Nov 24 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
语义化 H1 标签
2008/01/14 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
Pycharm配置远程调试的方法步骤
2018/12/17 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python面向对象编程基础实例分析
2020/01/17 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
有限公司股东合作协议书
2014/10/29 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫