通俗易懂的講一下Vue的雙向綁定和React的單向綁定

1.Vue?的雙向綁定:

<template><!-- 輸入框和數據自動綁定,就像連體嬰兒,一個動另一個也動 --><input v-model="message"><p>{{ message }}</p><!-- 完整表單示例 --><form><!-- 所有輸入都自動同步到數據,就像寫在紙上字自動復制一樣 --><input v-model="user.name" placeholder="姓名"><input v-model="user.age" placeholder="年齡"><textarea v-model="user.bio" placeholder="簡介"></textarea></form>
</template><script setup>
// 定義響應式數據
const message = ref('')
const user = reactive({name: '',age: '',bio: ''
})// 當輸入框值改變時:
// 1. 自動更新 message 的值
// 2. 相關的視圖自動更新
// 就像連鎖反應一樣,不需要手動處理
</script>

2.React 的單向綁定:

function App() {// 定義狀態和更新函數const [message, setMessage] = useState('')const [user, setUser] = useState({name: '',age: '',bio: ''})// 處理輸入變化const handleNameChange = (e) => {// 需要手動更新數據setUser({...user,name: e.target.value})}return (<div>{/* 輸入框的值來自 message */}{/* 當輸入時需要手動調用 setMessage 更新 */}{/* 就像傳話游戲,需要一個一個傳遞 */}<input value={message}onChange={e => setMessage(e.target.value)}/>{/* 完整表單示例 */}<form>{/* 每個輸入都需要手動處理更新 */}{/* 就像搬家,每件物品都要自己搬 */}<input value={user.name}onChange={handleNameChange}placeholder="姓名"/></form></div>)
}

3.生活中的例子

Vue 的雙向綁定就像:

  • 自動門:感應到人就自動開關
  • 恒溫空調:自動調節溫度
  • 自動檔汽車:自動換擋
  • 智能家居:一切自動化

React?的單向綁定就像:

  • 普通門:需要手動開關
  • 普通空調:需要手動調溫度
  • 手動檔汽車:需要手動換擋
  • 傳統家電:需要手動控制

4.更多實際例子:


Vue 示例(購物車):

<template><!-- 商品列表 --><div v-for="item in cart" :key="item.id"><!-- 數量輸入框自動同步到數據 --><input v-model="item.quantity" type="number"><!-- 價格自動計算 --><p>總價:{{ item.price * item.quantity }}</p></div><!-- 總價自動計算 --><p>購物車總價:{{ totalPrice }}</p>
</template><script setup>
// 購物車數據
const cart = reactive([{ id: 1, name: '蘋果', price: 5, quantity: 1 },{ id: 2, name: '香蕉', price: 3, quantity: 1 }
])// 計算總價(自動更新)
const totalPrice = computed(() => {return cart.reduce((total, item) => {return total + item.price * item.quantity}, 0)
})
</script>

React 示例(購物車):

function ShoppingCart() {// 購物車數據const [cart, setCart] = useState([{ id: 1, name: '蘋果', price: 5, quantity: 1 },{ id: 2, name: '香蕉', price: 3, quantity: 1 }])// 處理數量變化const handleQuantityChange = (id, quantity) => {// 需要手動更新整個購物車數據setCart(cart.map(item => {if (item.id === id) {return { ...item, quantity }}return item}))}// 計算總價const totalPrice = cart.reduce((total, item) => {return total + item.price * item.quantity}, 0)return (<div>{/* 商品列表 */}{cart.map(item => (<div key={item.id}>{/* 需要手動處理數量變化 */}<input type="number"value={item.quantity}onChange={e => handleQuantityChange(item.id, Number(e.target.value))}/><p>總價:{item.price * item.quantity}</p></div>))}<p>購物車總價:{totalPrice}</p></div>)
}

總結:

Vue 的特點:

  • 自動同步數據和視圖
  • 代碼簡潔易寫
  • 不需要手動處理更新
  • 適合快速開發

React?的特點:

  • 需要手動處理更新
  • 代碼較多但清晰
  • 數據流向明確
  • 適合大型項目

就像:

  • Vue 是全自動洗衣機(一鍵完成)
  • React?是半自動洗衣機(需要手動設置每個步驟)

選擇建議:

  • 小項目、快速開發:選 Vue
  • 大項目、團隊協作:選 React
  • 新手入門:Vue 更友好
  • 深入理解:React 更有幫助

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64998.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64998.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64998.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用setup.py打包 HuggingFace PEFT 項目詳解:pip install peft的幕后流程

使用 setup.py 打包 HuggingFace PEFT 項目詳解 Source: https://github.com/huggingface/peft/blob/main/setup.py 1. 項目簡介 HuggingFace 的 PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;庫是一個用于高效參數微調的 Python 工具包&#xff0c;支持多種…

BP神經網絡的反向傳播算法

BP神經網絡&#xff08;Backpropagation Neural Network&#xff09;是一種常用的多層前饋神經網絡&#xff0c;通過反向傳播算法進行訓練。反向傳播算法的核心思想是通過計算損失函數對每個權重的偏導數&#xff0c;從而調整權重&#xff0c;使得網絡的預測輸出與真實輸出之間…

線程池的創建規范

第1章&#xff1a;引言——為什么使用線程池&#xff1f; 1.1 線程池的概念 線程池是一個容器&#xff0c;用來管理多個工作線程&#xff0c;它通過對線程的管理、復用來提高系統性能。線程池的核心理念是將線程的創建、銷毀、復用等操作交給線程池來管理&#xff0c;避免了頻…

【藍橋杯比賽-C++組-經典題目匯總】

1. 最短路 題目描述&#xff1a; 如下圖所示&#xff0c;G是一個無向圖&#xff0c;其中藍色邊的長度是1、橘色邊的長度是2、綠色邊的長度是3。 則從 A 到 S 的最短距離是多少&#xff1f; #include <iostream> #include <cstring> using namespace std; const i…

活動預告 | Microsoft 安全在線技術公開課:通過擴展檢測和響應抵御威脅

課程介紹 通過 Microsoft Learn 免費參加 Microsoft 安全在線技術公開課&#xff0c;掌握創造新機遇所需的技能&#xff0c;加快對 Microsoft Cloud 技術的了解。參加我們舉辦的“通過擴展檢測和響應抵御威脅”技術公開課活動&#xff0c;了解如何更好地在 Microsoft 365 Defen…

第八節:GLM-4v-9b模型的大語言模型源碼解讀(ChatGLMForConditionalGeneration)

文章目錄 前言一、ChatGLMForConditionalGeneration類源碼解讀1、ChatGLMForConditionalGeneration類源碼2、self.transformer方法源碼3、loss_fct = CrossEntropyLoss(ignore_index=-100)方法Demo二、ChatGLMModel類源碼解讀三、GLMTransformer結構源碼解讀四、GLMBlock結構源…

Windows onnxruntime編譯openvino

理論上來說&#xff0c;可以直接訪問 ONNXRuntime Releases 下載 dll 文件&#xff0c;然后從官方文檔中下載缺少的頭文件以直接調用&#xff0c;但我沒有嘗試過。 1. 下載 OpenVINO 包 從官網下載 OpenVINO 的安裝包并放置在 C:\Program Files (x86) 路徑下&#xff0c;例如…

Vue3 中的插槽

Vue3 中插槽的使用&#xff0c;插槽是 Vue 中的一個特別特性&#xff0c;插槽就是模版內容。例如<h1>標題 1</h1>標題 1 就是插槽&#xff0c;Vue 是無法識別模板內容的&#xff0c;只能通過屬性進行傳遞。Slot 主要包括默認、具名和作用域。Slot開發起來難度不大&…

01.02周四F34-Day43打卡

文章目錄 1. 地是濕的。昨晚估計下雨了。2. 你可能把包丟在餐廳里了吧?3. 她說他可能誤了航班。4. 我本來應該早點來的,但路上特別堵。5. 約翰可能在那次事故中受了重傷。6. 這是一個情景對話7. 我本可以走另一條路的。8. 我準是瘦了不少,你看我這褲子現在多肥。9. 錢沒了!會…

深度學習:基于MindSpore NLP的數據并行訓練

什么是數據并行&#xff1f; 數據并行&#xff08;Data Parallelism, DP&#xff09;的核心思想是將大規模的數據集分割成若干個較小的數據子集&#xff0c;并將這些子集分配到不同的 NPU 計算節點上&#xff0c;每個節點運行相同的模型副本&#xff0c;但處理不同的數據子集。…

五類推理(邏輯推理、概率推理、圖推理、基于深度學習的推理)的開源庫 (一)

在開發中&#xff0c;有一些開源庫可以實現不同類型的推理&#xff0c;包括邏輯推理、概率推理、圖推理、基于深度學習的推理等。以下是五類推理&#xff08;邏輯推理、概率推理、圖推理、基于深度學習的推理&#xff09;的現成開源庫&#xff0c;它們各自的功能、特點和適用場…

高等數學學習筆記 ? 函數的極限

1. 函數的極限定義 備注&#xff1a;已知坐標軸上一點&#xff0c;則&#xff1a; ①&#xff1a;的鄰域&#xff1a;指附近的開區間&#xff0c;記作。 ②&#xff1a;的去心鄰域&#xff1a;指附近的開區間&#xff0c;但不包含&#xff0c;記作。 ③&#xff1a;的鄰域&…

Python用K-Means均值聚類、LRFMC模型對航空公司客戶數據價值可視化分析指標應用|數據分享...

全文鏈接&#xff1a;https://tecdat.cn/?p38708 分析師&#xff1a;Yuling Fang 信息時代的來臨使得企業營銷焦點從產品中心轉向客戶中心&#xff0c;客戶關系管理成為企業的核心問題&#xff08;點擊文末“閱讀原文”獲取完整代碼數據&#xff09;。 客戶關系管理的關鍵是客…

【前端系列】優化axios響應攔截器

文章目錄 一、前言&#x1f680;&#x1f680;&#x1f680;二、axios響應攔截器&#xff1a;??????2.1 為什么前端需要響應攔截器element ui的消息組件 一、前言&#x1f680;&#x1f680;&#x1f680; ?? 回報不在行動之后&#xff0c;回報在行動之中。 這個系列可…

【 IEEE 獨立出版 · EI核心、Scopus穩定檢索 】第二屆算法、軟件工程與網絡安全國際學術會議(ASENS 2025)

ASENS 2025 第二屆算法、軟件工程與網絡安全國際學術會議 2025 2nd International Conference on Algorithms, Software Engineering and Network Security 中國 廣州 2025年3月21-23日 會議官網&#xff1a;www.ic-asens.org IEEE 獨立出版 EI核心、Scopus快速…

/ete/security/limits.conf參數詳解

/ete/security/limits.conf配置文件 內容如下&#xff1a; * soft nofile 65535 * hard nofile 65535參數詳解 *: 表示對所有用戶生效soft: 表示軟限制&#xff0c;即用戶可以通過ulimit命令自行調整該值hard: 表示硬限制&#xff0c;即用戶無法通過ulimit命令將該值調整超過…

#Vue3篇: 無感刷新token的原理JSESSIONID無感刷新和JWT接口刷新

基于這個后端是怎么更新token的 為了理解后端是如何更新 Token 的&#xff0c;我們需要考慮一個典型的基于 Token 的身份驗證流程&#xff0c;特別是涉及 JSESSIONID 和自定義 Token&#xff08;如 JWT, JSON Web Token&#xff09;的情況。 下面我將介紹兩種常見的更新 Token …

模塊化通訊管理機在物聯網系統中的應用

安科瑞劉鴻鵬 摘要 隨著能源結構轉型和智能化電網的推進&#xff0c;電力物聯網逐漸成為智能電網的重要組成部分。本文以安科瑞ANet系列智能通信管理機為例&#xff0c;探討其在電力物聯網中的應用&#xff0c;包括數據采集、規約轉換、邊緣計算、遠程控制等技術實踐&#…

Python基于Gradio可視化部署機器學習應用

Gradio 是一個用于快速創建機器學習模型和用戶界面之間交互的 Python 庫。它允許你無需編寫大量前端代碼&#xff0c;就能將機器學習模型部署為可交互的網頁應用。以下是一個基于 Gradio 可視化部署機器學習應用的基本步驟&#xff1a; 安裝 Gradio&#xff1a; 首先&#xff0…

Springboot使用RabbitMQ實現關閉超時訂單的一個簡單示例

1.maven中引入rabbitmq的依賴&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.application.yml中進行rabbitmq相關配置&#xff1a; # rabbit…