欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于React實現(xiàn)表單數(shù)據(jù)的添加和刪除詳解

 更新時間:2017年03月14日 11:59:26   作者:zhou_xiao_cheng  
這篇文章主要給大家介紹了基于React實現(xiàn)表單數(shù)據(jù)的添加和刪除的方法,文中給出了詳細的示例供大家參考,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

前言

最近在學習React,做了一個簡單的Demo,用以自勉及和有需要的朋友們參考學習。

實現(xiàn)功能

在輸入框中輸入數(shù)據(jù)后,點擊保存按鈕,數(shù)據(jù)將會逐一顯示在輸入框下方,點擊保存后顯示的任何一條數(shù)據(jù),該數(shù)據(jù)即可被刪除。

實現(xiàn)思路

在開始實現(xiàn)之前,我們需要理清我們的思路,這樣才能更好地去完成預(yù)定功能。

  1. 點擊保存按鈕時,輸入框中的數(shù)據(jù)讀取,可通過onChange綁定事件,獲得輸入框數(shù)據(jù):e.target.value
  2. 自定義一個事件,輸入數(shù)據(jù)后,點擊保存按鈕時,數(shù)據(jù)的存儲操作交由該事件完成
  3. 當不斷點擊保存按鈕時,數(shù)據(jù)應(yīng)該是多個的,可選用數(shù)組來存儲數(shù)據(jù)
  4. 數(shù)組中,數(shù)組的索引是唯一表示一個數(shù)據(jù)的方式,數(shù)據(jù)的操作可通過索引進行

實現(xiàn)過程

class ReactDemo extends React.Component{
 render(){
 return(
  <div>
  <input />
  <button>點擊保存</button>
  </div>
 )
 }
}
ReactDOM.render(<ReactDemo />,document.getElementById('app'))

這是本次Demo的雛形,接下來我們將會在這上面一點一點地做修改,進行功能的完善。

此時,表單為非受控組件,也就是普通的組件,在輸入框中輸入任何數(shù)據(jù),在輸入框內(nèi)均會顯示。

React組件提供了this.state以及this.setState,利用它們,我們可以十分方便地管理、更新組件的狀態(tài)。

 constructor() {
 super()
 this.state = {
  val: '',
  arr: []
 }
 }

this.state通常在構(gòu)造函數(shù)內(nèi)部進行初始化,其值為對象,本例中,val用于保存輸入框中的值,初始值為空字符串;arr是個數(shù)據(jù),用于存儲多個數(shù)據(jù)。

 handleData(e) {
 this.setState({
  val: e.target.value
 })
 }

這里,this.setState會將val的值更新為e.target.value,當組件狀態(tài)值(這里為val)發(fā)生改變,組件就會自動調(diào)用render()重新渲染UI 。

 onButtonClick(e) {
  var val = this.state.val
  this.setState({
  arr: [val, ...this.state.arr]
  })
 }

展開運算符(…)是ES6的語法,它允許一個表達式在某處展開,利用這一特性,可將數(shù)組元素逐一展開:...this.state.arr,讓val總是成作為數(shù)組的第一個元素,組成新數(shù)組[val, ...this.state.arr]后,賦給arr。

 onDelete(index, e) {
 this.setState({
  arr: this.state.arr.filter((elem, i) => index !== i)
 })
 }

通過數(shù)組的索引對數(shù)據(jù)進行刪除操作, [].filter()接受一個方法作為它的參數(shù),并返回匹配條件(index !== i)的元素組成的新數(shù)組。

 {arr1.map((i,index) =>(
 <div onClick={this.onDelete.bind(this,index)}>{i}</div>
 ))}

這種JSX的語法是由facebook官方提出的一種十分簡明的寫法,個人覺得好用到爆。[].map()對數(shù)組元素依次進行函數(shù)的調(diào)用,并返回函數(shù)調(diào)用結(jié)果組成的新數(shù)組。bind(this,index)的第二個參數(shù)index為原函數(shù)onDelete(index,e)省略掉的第一個參數(shù)。

好了,大功告成,讓我們一起來看下效果吧…

添加效果

刪除后效果

總結(jié)

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • react實現(xiàn)每隔60s刷新一次接口的示例代碼

    react實現(xiàn)每隔60s刷新一次接口的示例代碼

    本文主要介紹了react實現(xiàn)每隔60s刷新一次接口的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • React自定義hooks同步獲取useState的最新狀態(tài)值方式

    React自定義hooks同步獲取useState的最新狀態(tài)值方式

    這篇文章主要介紹了React自定義hooks同步獲取useState的最新狀態(tài)值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 詳解React如何獲取狀態(tài)的舊值

    詳解React如何獲取狀態(tài)的舊值

    最近剛開始接觸 React,突然腦海出現(xiàn)一個問題,React中怎么在狀態(tài)更新時獲取它的舊值,特別是如果你之前用過 Vue,你可能會想知道 React 中有沒有類似 Vue 的 watch 屬性,那么react中怎么實現(xiàn)呢?本文就給大家介紹一下React如何獲取狀態(tài)的舊值,需要的朋友可以參考下
    2024-07-07
  • React實現(xiàn)虛擬滾動的三種思路詳解

    React實現(xiàn)虛擬滾動的三種思路詳解

    在??web??開發(fā)的過程中,或多或少都會遇到大列表渲染的場景,為了解決大列表造成的渲染壓力,便出現(xiàn)了虛擬滾動技術(shù),本文主要介紹虛擬滾動的三種思路,希望對大家有所幫助
    2024-04-04
  • ReactNative列表ListView的用法

    ReactNative列表ListView的用法

    本篇文章主要介紹了ReactNative列表ListView的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • React創(chuàng)建對話框組件的方法實例

    React創(chuàng)建對話框組件的方法實例

    在項目開發(fā)過程中,對于復(fù)雜的業(yè)務(wù)選擇功能很常見,下面這篇文章主要給大家介紹了關(guān)于React創(chuàng)建對話框組件的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • React注冊倒計時功能的實現(xiàn)

    React注冊倒計時功能的實現(xiàn)

    這篇文章主要介紹了React注冊倒計時功能的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • React配置Redux并結(jié)合本地存儲設(shè)置token方式

    React配置Redux并結(jié)合本地存儲設(shè)置token方式

    這篇文章主要介紹了React配置Redux并結(jié)合本地存儲設(shè)置token方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • React如何實現(xiàn)視頻旋轉(zhuǎn)縮放

    React如何實現(xiàn)視頻旋轉(zhuǎn)縮放

    這篇文章主要為大家詳細介紹了React如何實現(xiàn)視頻旋轉(zhuǎn)縮放功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • React封裝彈出框組件的方法

    React封裝彈出框組件的方法

    這篇文章主要為大家詳細介紹了React封裝彈出框組件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論