React的单向数据绑定

文章目录

    • 单项数据绑定
    • 通过onChange方法,实现双向数据绑定

单项数据绑定

在 Vue 中,可以通过 v-model 指令来实现双向数据绑定。但是,在 React 中并没有指令的概念,而且 React 默认不支持 双向数据绑定

React 只支持,把数据从 state 上传输到 页面,但是,无法自动实现数据从 页面 传输到 state 中 进行保存。

React中,只支持单项数据绑定,不支持双向数据绑定。不信的话,我们来看下面这个例子:

import React from "react";export default class MyComponent extends React.Component {constructor(props) {super(props);this.state = {msg: "这是 MyComponent 组件 默认的msg"};}render() {return (<div><h3>呵呵哒</h3><input type="text" value={this.state.msg} /></div>);}}

上方代码中,我们尝试在 input文本框中读取 state.msg 的值,运行结果中,却弹出了警告:

20190213_2000.png

Warning: Failed prop type: You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.

通过onChange方法,实现双向数据绑定

如果针对 表单元素做 value 属性绑定,那么,必须同时为 表单元素 绑定 readOnly, 或者提供 onChange 事件:

  • 如果是绑定readOnly,表示这个元素只读,不能被修改。此时,控制台就不会弹出警告了。

  • 如果是绑定onChange,表示这个元素的值可以被修改,但是,要自己定义修改的逻辑。

绑定readOnly的举例如下:(表示value中的数据是只读的)

	<input type="text" value={this.state.msg} readOnly />

绑定 onChange 的举例如下:(通过onChange方法,实现双向数据绑定)

(1)index.html:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head><body><!-- 容器,通过 React 渲染得到的 虚拟DOM,会呈现到这个位置 --><div id="app"></div>
</body></html>

(2)main.js:

// JS打包入口文件
// 1. 导入包
import React from "react";
import ReactDOM from "react-dom";// 导入组件
import MyComponent from "./components/MyComponent.jsx";// 使用 render 函数渲染 虚拟DOM
ReactDOM.render(<div><MyComponent></MyComponent></div>,document.getElementById("app")
);

(3)components/MyComponent.jsx

import React from "react";export default class MyComponent extends React.Component {constructor(props) {super(props);this.state = {msg: "这是组件 默认的msg"};}render() {return (<div><h1>呵呵哒</h1><inputtype="text" value={this.state.msg} onChange={this.txtChanged} ref="txt" /><h3>{"实时显示msg中的内容:" + this.state.msg}</h3></div>);}// 为 文本框 绑定 txtChanged 事件txtChanged = (e) => {// 获取 <input> 文本框中 文本的3种方式://  方式一:使用 document.getElementById//  方式二:使用 ref// console.log(this.refs.txt.value);//  方式三:使用 事件对象的 参数 e 来拿// 此时,e.target 就表示触发 这个事件的 事件源对象,得到的是一个原生的JS DOM 对象。在这个案例里,e.target就是指文本框// console.log(e.target.value);this.setState({msg: e.target.value});};
}

工程文件:ReactDemo.zip

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWS関連職種向け:日本語面接QA集

1. 自己紹介&#xff08;じこしょうかい&#xff09; Q&#xff1a;簡単に自己紹介をお願いします。 A&#xff1a; はい、〇〇と申します。これまで約4年間、主にAWSを基盤としたインフラ設計・構築・運用に従事してまいりました。VPCやEC2、RDS、S3などの基本サービスの設計…

AlphaCore GPU 物理仿真引擎内测邀请

AlphaCore 是 MooreThreads 研发的下一代 GPU 物理仿真引擎&#xff0c;为影视特效&#xff0c;游戏交互&#xff0c;数字孪生等领域&#xff0c;提供超高精度的仿真模拟。 申请试用​ 目前我们的Catalyst FX 还处于内部申请测试阶段&#xff0c;请发送邮件至 alphacoremthre…

鸿蒙OSUniApp 实现的日期选择器与时间选择器组件#三方框架 #Uniapp

UniApp 实现的日期选择器与时间选择器组件 在移动应用开发中&#xff0c;日期选择器和时间选择器是表单、预约、日程、打卡等场景中不可或缺的基础组件。一个好用的日期/时间选择器不仅能提升用户体验&#xff0c;还能有效减少输入错误。随着 HarmonyOS&#xff08;鸿蒙&#…

嵌入式开发STM32 -- 江协科技笔记

1.背景介绍及基础认知 8大输入输出 斯密特触发器&#xff1a;高于设定阈值输出高电平&#xff0c;低于设定阈值输出低电平 有关上拉输入、下拉输入、推挽输出、开漏输出、复用开漏输出、复用推挽输出以及浮空输入、模拟输入的区别 1、上拉输入&#xff1a;上拉就是把电位拉高…

RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头

视频链接&#xff1a;RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头_哔哩哔哩_bilibili RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头 RTSP&#xff08;Real-Time Streaming Protocol&#xff0c;实时流传输协议&#xff09; 是一种基于文本的应用层协议&…

Python面试1

1. 解释型语言和编译型语言的区别 编译型语言&#xff1a; 将程序编译成二进制可执行程序&#xff08;C、C) 解释型语言&#xff1a; 将程序逐行解释运行&#xff08;python&#xff09; Java不是将源程序直接编译机器语言&#xff0c;而是编译成字节码文件&#xff0c;然后用…

输入一串字符,统计其中字母的个数

#include <stdio.h> int main() { char ch; int count 0; printf("请输入一串字符&#xff1a;\n"); while ((ch getchar())! \n) { if ((ch > a && ch < z) || (ch > A && ch < Z)) { count; } } printf("字母的个数为&a…

git基础语法回顾

1. 初始化与克隆 git init 初始化一个新的本地仓库。git clone <repo-url> 克隆远程仓库到本地&#xff08;如 git clone https://github.com/user/repo.git&#xff09;。 2. 基础操作 git add <file> 将文件添加到暂存区&#xff08;如 git add main.py&#x…

华为仓颉语言初识:结构体struct和类class的异同

前言 华为仓颉语言是鸿蒙原生应用的一种新的编程语言&#xff0c;采用面向对象的编程思想&#xff0c;为开发者带来新的开发体验。不仅可以和 ArkTs 相互调用&#xff0c;更能提升应用程序的性能&#xff0c;更重要的是仓颉语言的特点结合了 java 和 C 的特点。对开发者来说比…

电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测

电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测 目录 电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测预测效果基本描述程序设计参考资料 预测效果 基本描述 电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测 运行环境Matlab2023b及以上&#xff0c;锂电池剩余寿…

在 Ubuntu 24.04 LTS 上 Docker 部署 DB-GPT

一、DB-GPT 简介 DB-GPT 是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。目的是构建大模型领域的基础设施&#xff0c;通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及…

早停策略和模型权重的保存

知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 作业&#xff1a;对信贷数据集训练后保存权重&#xff0c;加载权重后继续训练50轮&#xf…

DeepSpeed-Ulysses:支持极长序列 Transformer 模型训练的系统优化方法

DeepSpeed-Ulysses&#xff1a;支持极长序列 Transformer 模型训练的系统优化方法 flyfish 名字 Ulysses “Ulysses” 和 “奥德修斯&#xff08;Odysseus&#xff09;” 指的是同一人物&#xff0c;“Ulysses” 是 “Odysseus” 的拉丁化版本 《尤利西斯》&#xff08;詹姆…

Redis-基础-总结

一、概述 Remote Dictionary Server(远程字典服务)是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;是一个高性能的Key-Value数据库提供了丰富的数据结构&#xff0c;例如String、Hash、List、Set、sortedset等等。数据是存在内存中的&#xff0c;同时Redis…

尚硅谷redis7 28-32 redis持久化之理论介绍

28redis持久化之理论介绍 redis持久化&#xff1a;redis如何将内存数据写入磁盘中 为什么需要持久化&#xff1f; 内存数据一断电就会消失&#xff0c;那么所有的请求都会打到数据库中。因此让redis中的数据长期持有&#xff0c;不管是重启、故障、恢复、宕机&#xff0c;还…

JS逆向【抖查查】逆向分析 | sign | secret签名验证

1.目标 目标网址&#xff1a;https://www.douchacha.com/bloggerRankingRise 切换日期出现目标请求 import requests import jsonheaders {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q0.9","…

【数据仓库面试题合集④】SQL 性能调优:面试高频场景 + 调优策略解析

随着业务数据规模的持续增长,SQL 查询的执行效率直接影响到数据平台的稳定性与数据产出效率。因此,在数据仓库类岗位的面试中,SQL 性能调优常被作为重点考察内容。 本篇将围绕常见 SQL 调优问题,结合实际经验,整理出高频面试题与答题参考,助你在面试中游刃有余。 🎯 高…

python打卡训练营打卡记录day37

知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 作业&#xff1a;对信贷数据集训练后保存权重&#xff0c;加载权重后继续训练50轮&#xf…

卷积神经网络(CNN)深度讲解

卷积神经网络&#xff08;CNN&#xff09; 本篇博客参考自大佬的开源书籍&#xff0c;帮助大家从头开始学习卷积神经网络&#xff0c;谢谢各位的支持了&#xff0c;在此期待各位能与我共同进步​ 卷积神经网络&#xff08;CNN&#xff09;是一种特殊的深度学习网络结构&#x…

深度体验:海螺 AI,开启智能创作新时代

人工智能 AI 工具如雨后春笋般涌现&#xff0c;而海螺 AI 以其独特的魅力与卓越的性能&#xff0c;迅速在众多产品中崭露头角&#xff0c;成为了无数创作者、办公族以及各行业人士的得力助手。近期&#xff0c;我对海螺 AI 进行了深入的使用体验&#xff0c;接下来就为大家详细…