最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

最近在學(xué)習(xí)React,做了一個(gè)簡(jiǎn)單的Demo,用以自勉及和有需要的朋友們參考學(xué)習(xí)。

實(shí)現(xiàn)功能

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

實(shí)現(xiàn)思路

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

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

實(shí)現(xiàn)過程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

添加效果

刪除后效果

總結(jié)

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

相關(guān)文章

  • react中useEffect Hook作用小結(jié)

    react中useEffect Hook作用小結(jié)

    React中useEffect是一個(gè)非常重要的Hook,它允許我們函數(shù)組件中執(zhí)行副作用操作,本文就來介紹一下useEffect Hook作用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-11-11
  • React學(xué)習(xí)筆記之事件處理(二)

    React學(xué)習(xí)筆記之事件處理(二)

    這篇文章主要跟大家介紹了關(guān)于React中事件處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)React具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • react實(shí)現(xiàn)阻止父容器滾動(dòng)

    react實(shí)現(xiàn)阻止父容器滾動(dòng)

    這篇文章主要介紹了react實(shí)現(xiàn)阻止父容器滾動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • React?setState是異步還是同步原理解析

    React?setState是異步還是同步原理解析

    這篇文章主要為大家介紹了React?setState是異步還是同步原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React組件渲染后對(duì)DOM的操作方式

    React組件渲染后對(duì)DOM的操作方式

    這篇文章主要介紹了React組件渲染后對(duì)DOM的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 基于Webpack5 Module Federation的業(yè)務(wù)解耦實(shí)踐示例

    基于Webpack5 Module Federation的業(yè)務(wù)解耦實(shí)踐示例

    這篇文章主要為大家介紹了基于Webpack5 Module Federation的業(yè)務(wù)解耦實(shí)踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • React?Redux管理庫(kù)示例詳解

    React?Redux管理庫(kù)示例詳解

    這篇文章主要介紹了如何在React中直接使用Redux,目前redux在react中使用是最多的,所以我們需要將之前編寫的redux代碼,融入到react當(dāng)中去,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2022-12-12
  • 基于react項(xiàng)目打包c(diǎn)ss引用路徑錯(cuò)誤解決方案

    基于react項(xiàng)目打包c(diǎn)ss引用路徑錯(cuò)誤解決方案

    這篇文章主要介紹了基于react項(xiàng)目打包c(diǎn)ss引用路徑錯(cuò)誤解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • ReactNative點(diǎn)擊事件.bind(this)操作分析

    ReactNative點(diǎn)擊事件.bind(this)操作分析

    這篇文章主要為大家介紹了ReactNative點(diǎn)擊事件.bind(this)操作分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • react hooks入門詳細(xì)教程

    react hooks入門詳細(xì)教程

    這篇文章主要介紹了react hooks入門詳細(xì)教程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04

最新評(píng)論

达州市| 和平县| 博湖县| 江都市| 武汉市| 邵阳县| 靖安县| 江西省| 通城县| 沧州市| 临夏市| 宽城| 沈阳市| 色达县| 望都县| 宁武县| 鞍山市| 闸北区| 五家渠市| 滨海县| 五华县| 盐津县| 屏边| 布尔津县| 潮州市| 峨眉山市| 雅安市| 休宁县| 墨脱县| 肥乡县| 顺平县| 昭苏县| 名山县| 高唐县| 镇江市| 牙克石市| 金阳县| 太仓市| 久治县| 莱州市| 潜山县|