React學習筆記之雙向資料繫結
React學習筆記之雙向資料繫結
前言
有過vue使用經驗的開發者對vue的資料繫結一定不會陌生,vue的資料可以簡單地通過v-model進行繫結。
而在react中,沒有提供v-model這樣的簡單的方法,而是需要在標籤上繫結value值以及一個方法
一、繫結基本資料型別
繫結基本資料型別可以通過標籤的value屬性以及一個方法監聽資料。
class Form extends Component {
state = {
//表單資料物件
form: {
username: 'zhangsan',
},
}
toChange = (key, e) => {
let value = e.target.value;
this.setState({
form: {
...this.state.form,
[key]: value
}
})
}
render() {
const { form } = this.state;
return (
<div>
使用者名稱:
<input type="text" value={form.username} onChange={this.toChange.bind(this, 'username')} />
</div>
);
}
}
用標籤的value屬性將state的中的資料繫結到標籤上,並繫結一個onChange方法,用該方法監聽input中的資料,當文字框的內的資料改變時,同時改變state中的資料。
二、繫結列表資料
如果要繫結列表資料,則要麻煩一些,需要進行一些陣列的操作。
class Form extends Component {
state = {
//表單資料物件
form: {
hobby: ['basketball'],
},
//所有愛好
hobbies: [{
id: 1,
name: '籃球',
value: 'basketball'
},
{
id: 2,
name: '足球',
value: 'soccer'
},
{
id: 3,
name: '跑步',
value: 'running'
}
],
toChangeList = (e) => {
let value = e.target.value;
// console.log(e.target.value)
//判斷form.hobby有沒有這個value
let arr = [...this.state.form.hobby];
if (arr.includes(value)) {
let index = arr.indexOf(value);
arr.splice(index, 1)
}
else {
arr.push(value)
}
this.setState({
form: {
...this.state.form,
hobby: arr
}
})
}
render() {
const { hobbies } = this.state;
return (
<div>
{JSON.stringify(this.state.form)}
愛好:
{
hobbies.map((item, index) => {
return (
<label htmlFor="">
<input type="checkbox" value={item.value} key={index} checked={form.hobby.includes(item.value)} onChange={this.toChangeList.bind(this)} /> {item.name}
</label>)
})
}
</div>
);
}
}
遍歷渲染出列表內的每一項,給每一項繫結方法和value,在checked屬性中判斷是否選定這個項,在繫結的方法中,則需要判斷state的列表中是否有這個項,如果有則,刪除這個項,如果沒有,則向state的列表中新增這個項。
相關文章
- [JS][Vue]學習記錄之雙向繫結JSVue
- HarmonyOS NEXT 學習筆記4--雙向繫結$$筆記
- Vue原始碼學習之雙向繫結Vue原始碼
- Java學習筆記:資料結構之線性表(雙向連結串列)Java筆記資料結構
- JS雙向資料繫結JS
- Vue資料雙向繫結原理Vue
- vue雙向資料繫結原理Vue
- 原生js雙向資料繫結JS
- [JS] 資料雙向繫結原理JS
- 從單向到雙向資料繫結
- 手把手教你為 React 新增雙向資料繫結(一)React
- 手把手教你為 React 新增雙向資料繫結(二)React
- LVGL雙向連結串列學習筆記筆記
- angular學習筆記<一>:模板與資料繫結Angular筆記
- 雙向資料繫結實現原理
- Vue 雙向資料繫結原理分析Vue
- javascript實現雙向資料繫結JavaScript
- vue.js雙向資料繫結Vue.js
- 雙向資料繫結是什麼
- 0 到 1 掌握:Vue 核心之資料雙向繫結Vue
- JavaScript 進階之深入理解資料雙向繫結JavaScript
- vue 雙向繫結(v-model 雙向繫結、.sync 雙向繫結、.sync 傳物件)Vue物件
- javascript實現資料的雙向繫結(手動繫結)JavaScript
- React跟Vue不同 沒有雙向繫結ReactVue
- Vue 中雙向繫結 Vs 單向資料流Vue
- 淺析vue的雙向資料繫結Vue
- vue中的雙向資料繫結原理Vue
- Vue props 雙向資料繫結方法Vue
- 【阿不】深入ASP.NET資料繫結(中)—資料雙向繫結機理ASP.NET
- js 實現vue的雙向資料繫結JSVue
- vue資料雙向繫結的實現原理Vue
- 原始碼分析:Vue的雙向資料繫結原始碼Vue
- vue2元件之間雙向資料繫結問題Vue元件
- Object.defineProperty與雙向繫結、資料監聽Object
- 淺談 Checkbox Group 的雙向資料繫結
- 簡單易懂的雙向資料繫結解讀
- JavaScript實現簡單的雙向資料繫結JavaScript
- 基於vue實現的雙向資料繫結Vue