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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82536.shtml
英文地址,請注明出處:http://en.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;接下來就為大家詳細…