详解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 相关文章推荐
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
心扬JS分页函数代码
Sep 10 Javascript
Jquery Ajax请求代码(2)
Jan 07 Javascript
DOM2非标准但却支持很好的几个属性小结
Jan 21 Javascript
jquery模拟SELECT下拉框取值效果
Oct 23 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
Nov 07 Javascript
node.js中的fs.fchmodSync方法使用说明
Dec 16 Javascript
JSONP原理及简单实现
Jun 08 Javascript
Vuejs+vue-router打包+Nginx配置的实例
Sep 20 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 Javascript
Vue element-ui父组件控制子组件的表单校验操作
Jul 17 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
python实现合并两个数组的方法
2015/05/16 Python
python实现杨辉三角思路
2017/07/14 Python
Python输出各行命令详解
2018/02/01 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
简单了解python的一些位运算技巧
2019/07/13 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
应聘编辑职位自荐信范文
2014/01/05 职场文书
学校十一活动方案
2014/02/01 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
信仰心得体会
2014/09/05 职场文书
小班上学期个人总结
2015/02/12 职场文书
初中生活随笔
2015/08/15 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android