详解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 相关文章推荐
使用正则替换变量
May 05 Javascript
form中限制文本字节数js代码
Jun 10 Javascript
js 获取子节点函数 (兼容FF与IE)
Apr 18 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
jquery(hide方法)隐藏指定元素实例
Nov 11 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
AngularJS中的promise用法分析
May 19 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 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中cookies使用指南
2007/03/16 PHP
PHP 变量类型的强制转换
2009/10/23 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
python挖矿算力测试程序详解
2019/07/03 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
物业电工岗位职责
2013/11/20 职场文书
金融专业毕业生推荐信
2013/11/26 职场文书
团日活动总结模板
2014/06/25 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
Golang 并发下的问题定位及解决方案
2022/03/16 Golang