React实现自定义双向数据流

2023-10-27

ng是双向数据流、VM双向数据绑定。而react与vue都是单向数据流,model层的数据流向view层。今天,我们就尝试自定义实现双向数据流。

案例:
组件中通过监听input内容变化,进而赋值。

class Bar extends React.Component {
	constructor(){
		super();
		this.state = {
			msg:''
		}
	}
	// input的内容变化赋值msg
	handleChange(event){
		this.setState({
			msg:event.target.value
		})
	}
	render(){
		let {msg} = this.state
		return(
			<div>
				// 监听input内容的变化
				<input onChange={this.handleChange.bind(this)}	type="text" />
				<p>输入的内容是:{msg}</p>
			</div>
		)
	}
}

ReactDOM.render(
	<Bar />,
	document.getElementById('app')
)

上个案例实现组件内部的双向数据流。
以下案例实现组件外部的双向数据流:

class App extends React.Component {
	constructor(){
		super();
		this.state = {
			msg:''
		}
	}
	// 获取到子组件传来的value,赋值到msg
	getValue(value){
		this.setState({
			msg:value
		})
	}
	render(){
		let {msg} = this.state
		return(
			<div>
				<Bar getValue={this.getValue.bind(this)} />
				<p>我是子组件input输入的内容:{msg}</p>
			</div>
		)
	}
}
class Bar extends React.Component {
	// input的内容变化调用父组件的getValue方法传值到父组件
	handleChange(event){
		this.props.getValue(event.target.value)
	}
	render(){
		return(
			<div>
				// 监听input内容的变化
				<input onChange={this.handleChange.bind(this)}	type="text" />
			</div>
		)
	}
}

ReactDOM.render(
	<App />,
	document.getElementById('app')
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React实现自定义双向数据流 的相关文章

  • ArrayList和LinkedList的区别

    ArrayList 基于动态数组 连续内存存储 适合下标访问 随机访问 因为里面存的元素的类型是一致的 所以内存长度是固定的 所以很快就能找到具体位置的元素 扩容机制 因为数组长度固定 超出长度存数据时需要新建数组 然后将老数组的数据拷贝到
  • 第一个只出现一次的字符

    在一个字符串 1 lt 字符串长度 lt 10000 全部由字母组成 中找到第一个只出现一次的字符 并返回它的位置 public class Solution public int FirstNotRepeatingChar String

随机推荐

  • 【torch报错】OSError: [WinError 127] The specified procedure could not be found. Error loading

    导入torch等库的时候报错OSError WinError 127 The specified procedure could not be found Error loading E anaconda3 envs py3 10 lib
  • mybatis讲解(2)之动态SQL的运用

    目录 经典面试题 1 mybatis动态sql 2 模糊查询 3种方式 3 查询返回结果集 总结 前言 在我上篇已经学习了Mybatis简介以及如何去连接数据库 具有增删改查的方法 那么我们今天来学习Mybatis的第二节关于1 mybat
  • 涉密服务器监控系统,涉密场所检查时有哪些注意事项?

    对举办涉密会议和活动的场所以及保密要害部门部位的环境进行检查 是保密技术检查的重要内容 涉密场所保密检查主要包括 门禁和监控系统的检查 异常无线信号检查 涉密场所周边环境的安全性检查 涉密场所隐藏电子设备的检查 隐藏摄像设备检查 电源的检查
  • 计算机算法设计与分析期末试题,算法设计与分析期末考试试卷(D卷)(含答案).doc...

    算法设计与分析期末考试试卷 D卷 一 选择题 0分 每题分 D A n2 2 2n的渐进表达式上界函数是O 2n B n2 2 2n的渐进表达式下界函数是 2n C logn3的渐进表达式上界函数是O logn D logn3的渐进表达式下
  • setter方法的内部实现【不要在init和dealloc函数中使用accessor】

    Objective C 2 0 增加了dot syntax 用于简单地调用成员变量的accessor 相当于java的getter和setter 因为正常情况下 写一个accessor对于初学者来说 还是挺容易犯错的 比如有一个NSStri
  • el-table多选+搜索

    一 问题描述 表格数据是一次性从后端获取到了全部的数据 可前端假分页 在模糊检索表格数据时 因为el table的数据源data发生了变化 重新触发了 selection change事件 此时如果仅仅是在 selection change
  • 27黑马QT笔记之QPixmap和QBitmap的区别

    27黑马QT笔记之QPixmap和QBitmap的区别 前提 首先我们先要了解什么是透明和不透明的图片 1 透明是指显示后与背景颜色一样的 2 不透明就是有自己的颜色 与背景颜色不一样 看下图 前者就是透明的 后者是背景是白色的 是不透明的
  • 详解Python中的三元运算

    详解Python中的三元运算 什么是三元运算符 在大部分编程语言中都有三目运算 也称三元运算 Python语言从Python2 5版本开始也引入了三元运算符 在Python中 三元运算也称为条件表达式 语法如下 true expressio
  • 文件后缀和MIME

    id 后缀名 MIME 0 gif image gif 1 jpg image jpeg 2 png image png 3 bmp image bmp 4 psd application octet stream 5 ico image
  • 锂电池保护板的分类有哪些?

    对于锂电池保护板的认识很多人也是一知半解 并不清楚锂电池保护板具有哪些分类结构 对于如何选择锂电池保护板有些朋友不知道从哪方面着手 那么今天专业生产锂电池保护的锂盾电子带着大家去了解下保护板的分类到底怎样去区分的 保护板可以分为三种种类 三
  • [tensorflow]从Keras加载、保存模型、显示模型权重

    import tensorflow as tf 构建模型 并加载imagenet预训练权重 base model tf keras applications InceptionV3 include top False weights ima
  • python怎么画折线图

    要在 Python 中绘制折线图 你可以使用 matplotlib 库中的 plot 函数 首先 你需要安装 matplotlib 库 这可以使用 pip 包管理器来完成 在终端或命令提示符中输入以下命令 pip install matpl
  • 毛坯房装修

    86平的房子带上家具大概在8 12万左右 硬装 即地面 墙面这些地方瓷砖 水电等装修s 软装 即家具 门框 窗帘等木材 布艺类 全屋定制一般是指 在设计上整体搭配设计 根据整体的设计来定做家具 全屋定制 2 5万 电器 2 5万 5万 窗帘
  • vuex是什么

    vuex是什么 一 vuex是什么 什么是vuex 一 vuex是什么 1 Vuex 是一个专为 Vue js 应用程序开发的状态管理模式 它由五部分组成 分别是 state actions mutations getters module
  • Electron官方实验工具Electron Fiddle

    如果开发者想验证一段简短的代码是否可以在Electron框架内正常运行 那么自己创建个Electron项目 再搞个开发调试环境 就太麻烦了 Electron官方团队为开发者提供了一个更快捷的创建项目并进行试验的工具 Electron Fid
  • 豪华气派!这些院校的图书馆也太美了!

    博尔赫斯曾经说过 我心里一直都在暗暗设想 天堂应该是图书馆的模样 图书馆作为校园里的重要建筑 可以说是大学的门面 很多同学在择校时也会重点关注学校的图书馆 把它作为了解学校底蕴的通道和入口 今天我们就来看看各大高校的神仙图书馆吧 北京大学图
  • ffmpeg vscode debug编译错误【已解决】

    1 make no targets Stop 修改方式 make j N 这个N查看本机有多少个核 问题查找参考链接 https github com openresty openresty issues 22 2 the EAI MEMO
  • 线性回归和逻辑回归(LR)

    回归就是输出值是连续的而不是离散的 如果是离散值 就是分类问题 1 线性回归 1 定义 给定数据集D x1 y1 x2 y2 线性回归尝试学习到一个线性模型 尽可能地输出正确标记 线性回归无非就是在N维空间中找一个形式像直线方程一样的函数来
  • 如何用3个月零基础入门网络安全?

    一 自学网络安全学习的误区和陷阱1 不要试图先成为一名程序员 以编程为基础的学习 再开始学习 我在之前的回答中 我都一再强调不要以编程为基础再开始学习网络安全 一般来说 学习编程不但学习周期长 而且实际向安全过渡后可用到的关键知识并不多 一
  • React实现自定义双向数据流

    ng是双向数据流 VM双向数据绑定 而react与vue都是单向数据流 model层的数据流向view层 今天 我们就尝试自定义实现双向数据流 案例 组件中通过监听input内容变化 进而赋值 class Bar extends React