react實(shí)現(xiàn)雙向綁定的示例代碼
React 本身沒(méi)有內(nèi)置雙向綁定,它默認(rèn)是單向數(shù)據(jù)流:
state → 視圖
視圖要改回 state,必須手動(dòng)寫(xiě)事件監(jiān)聽(tīng)。
所謂 React 的雙向綁定,就是自己把“數(shù)據(jù)到視圖”+“視圖到數(shù)據(jù)”封裝起來(lái)。
一、最簡(jiǎn)實(shí)現(xiàn)(原生 React)
function App() {
const [value, setValue] = useState('')
return (
<input
value={value}
onChange={(e) => setValue(e.target.value)}
/>
)
}這就是 React 版雙向綁定:
- 數(shù)據(jù) → 視圖:
value={value} - 視圖 → 數(shù)據(jù):
onChange里setValue
二、封裝成類(lèi)似 v-model 的工具
你可以封裝一個(gè)自定義 Hook,實(shí)現(xiàn)像 Vue 一樣簡(jiǎn)潔:
function useModel(initialState) {
const [value, setValue] = useState(initialState)
return {
value,
onChange: e => setValue(e.target.value)
}
}
// 使用
function App() {
const username = useModel('')
return <input {...username} />
}這樣就和 v-model="username" 幾乎一樣用。
三、React 18 官方:useImperativeHandle 不算
真正 React 里:
- 沒(méi)有
v-model指令 - 沒(méi)有自動(dòng)雙向綁定
- 一切都是**受控組件(Controlled Component)**手動(dòng)實(shí)現(xiàn)
四、和 Vue 對(duì)比
| Vue | React | |
|---|---|---|
| 雙向綁定 | v-model 內(nèi)置指令 | 無(wú)內(nèi)置,手動(dòng) value + onChange |
| 數(shù)據(jù)流 | 天然雙向 | 單向數(shù)據(jù)流,手動(dòng)實(shí)現(xiàn)雙向 |
| 簡(jiǎn)潔度 | 極簡(jiǎn)潔 | 稍繁瑣,但更可控 |
五、面試標(biāo)準(zhǔn)答案
- React 沒(méi)有內(nèi)置雙向綁定,遵循單向數(shù)據(jù)流。
- 通過(guò)受控組件實(shí)現(xiàn)雙向綁定:
value綁定 stateonChange事件更新 state
- 可以封裝自定義 Hook 簡(jiǎn)化寫(xiě)法,達(dá)到類(lèi)似
v-model的效果。
到此這篇關(guān)于react實(shí)現(xiàn)雙向綁定的示例代碼的文章就介紹到這了,更多相關(guān)react雙向綁定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決React初始化加載組件會(huì)渲染兩次的問(wèn)題
這篇文章主要介紹了解決React初始化加載組件會(huì)渲染兩次的問(wèn)題,文中有出現(xiàn)這種現(xiàn)象的原因及解決方法,感興趣的同學(xué)跟著小編一起來(lái)看看吧2023-08-08
React.js中組件重渲染性能問(wèn)題及優(yōu)化過(guò)程
這篇文章主要介紹了React.js中組件重渲染性能問(wèn)題及優(yōu)化過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
一文學(xué)會(huì)使用Remix寫(xiě)API接口
這篇文章主要為大家介紹了一文學(xué)會(huì)Remix寫(xiě)API接口實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
react如何使用useRef模仿抖音標(biāo)題里面添加標(biāo)簽內(nèi)容
本文介紹了如何模仿抖音發(fā)布頁(yè)面,使用div元素作為輸入框,并利用CSS樣式和JavaScript動(dòng)態(tài)操作DOM,實(shí)現(xiàn)類(lèi)似于input輸入框的功能,感興趣的朋友跟隨小編一起看看吧2024-10-10

