详解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 数值项目的格式化函数代码
May 14 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
Jan 17 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
Jan 18 Javascript
js实现类似jquery里animate动画效果的方法
Apr 10 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
Dec 12 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
Nov 22 Javascript
React组件refs的使用详解
Feb 09 Javascript
Vue-Router基础学习笔记(小结)
Oct 15 Javascript
简单说说angular.json文件的使用
Oct 29 Javascript
微信小程序自定义键盘 内部虚拟支付
Dec 20 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
Python与Redis的连接教程
2015/04/22 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python实现代码统计器
2019/09/19 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
美国第一香水网站:Perfume.com
2017/01/23 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
出国签证在职证明
2014/01/16 职场文书
学习决心书范文
2014/03/11 职场文书
企业宣传口号
2014/06/12 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
学校中秋节活动总结
2015/03/23 职场文书
爱国主义电影观后感
2015/06/18 职场文书
运动会致辞稿
2015/07/29 职场文书
放假通知怎么写
2015/08/18 职场文书
php双向队列实例讲解
2021/11/17 PHP
Go语言读取txt文档的操作方法
2022/01/22 Golang
详解OpenCV曝光融合
2022/04/29 Python