详解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 相关文章推荐
二级域名转向类
Nov 09 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
js两行代码按指定格式输出日期时间
Oct 21 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
JavaScript实现弹出子窗口并传值给父窗口
Dec 18 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
JS实现移动端按首字母检索城市列表附源码下载
Jul 05 Javascript
JS实现将二维数组转为json格式字符串操作示例
Jul 12 Javascript
关于微信小程序登录的那些事
Jan 08 Javascript
微信小程序框架的页面布局代码
Aug 17 Javascript
layer.js之回调销毁对话框的例子
Sep 11 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python守护进程用法实例分析
2015/06/04 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
python实现Adapter模式实例代码
2018/02/09 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
python爬虫之遍历单个域名
2019/11/20 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
Melissa香港官网:MDreams
2016/07/01 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
电脑饰品店的创业计划书
2014/01/21 职场文书
小学防溺水制度
2014/01/29 职场文书
入队仪式主持词
2015/07/04 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang