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

解決ant Design中Select設(shè)置initialValue時(shí)的大坑

 更新時(shí)間:2020年10月29日 09:44:31   作者:smile&$  
這篇文章主要介紹了解決ant Design中Select設(shè)置initialValue時(shí)的大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

我出現(xiàn)的問(wèn)題:例如在編輯活動(dòng)關(guān)聯(lián)紅包的時(shí)候,需求是select顯示的是紅包名稱,但是表單提交的時(shí)候是紅包ID:設(shè)置默認(rèn)值的initialValue為Id的時(shí)候,會(huì)出現(xiàn)顯示是id (需要的是顯示名稱);如果設(shè)置默認(rèn)值initialValue是名稱,那么下一步操作會(huì)出現(xiàn)報(bào)錯(cuò)

但是我還有一種情況:某個(gè)活動(dòng)關(guān)聯(lián)的紅包被刪除了,在Select中的可供選項(xiàng)中redPackets沒(méi)有這個(gè)紅包的時(shí)候,顯示的會(huì)是紅包id,而不是紅包名稱

錯(cuò)誤效果圖:

期待正確效果圖

解決方案:在默認(rèn)值的后面加上一個(gè)空字符串進(jìn)行轉(zhuǎn)換;

      <FormItem {...formItemLayout} label="活動(dòng)紅包">
       {getFieldDecorator("redPacketId", {
        rules: [{ required: true, message: "紅包必填" }],
        initialValue: redPacketId + ""
       })(
        <Select>
         {redPackets.map(rp => (
          <Option key={rp.redPacketCommonId}>{rp.packetName}</Option>
         ))}
        </Select>
       )}
      </FormItem>

補(bǔ)充知識(shí):ant 組件initialValue 初始值更新問(wèn)題,setState和setFieldValue淺談

組件被賦初始值了之后,有兩種情況需要更新組件的value,一種情況是子組件觸發(fā)的父組件的value的更新,另一種是父組件自己觸發(fā)的value更新。

實(shí)現(xiàn)場(chǎng)景

在門票訂購(gòu)頁(yè)面引入了一個(gè)游客信息子組件,如下圖所示,可以通過(guò)子組件新增游客或刪除游客來(lái)改變訂購(gòu)數(shù)量,也可以通過(guò)在訂購(gòu)頁(yè)面批量導(dǎo)入游客來(lái)改變訂購(gòu)數(shù)量。

 <FormItem {...formItemLayout} label="數(shù)量">
  {
   getFieldDecorator('number', {
     rules: [{
      required: true, message: '數(shù)量',
     }],
     initialValue: this.state.peopleNum
    })(<InputNumber disabled={true} style={{ width: 120, height: 33 }} onChange={this.peopleNumChange} />)
   }
</FormItem>

起初若是子組件觸發(fā)的更改就調(diào)用父組件的回調(diào)函數(shù),函數(shù)中使用this.setState({peopleNum})的方法來(lái)更新,若是父組件自己觸發(fā)的更改就直接調(diào)用this.setState({peopleNum})來(lái)更新InputNumber的值,后來(lái)發(fā)現(xiàn)state的值更新了,但是并沒(méi)有改變InputValue的值,因此就通過(guò) setFieldsValue來(lái)解決該問(wèn)題,發(fā)現(xiàn)setFieldsValue直接設(shè)置值 比this.setState設(shè)置initialvalue的等級(jí)更高一點(diǎn)。

 peopleNumChange = (value) => {
  const { setFieldsValue } = this.props.form;
  this.setState({
   peopleNum: value,
  });
  this.props.form.setFieldsValue({
   number: value, 
  })
 }

ant 自己封裝的table組件initialValue 初始值更新問(wèn)題

實(shí)現(xiàn)場(chǎng)景

在門票訂購(gòu)頁(yè)面引入了一個(gè)游客信息子組件,如下圖所示,可以通過(guò)子組件新增游客或刪除游客來(lái)直接改變子組件中游客信息,也可以通過(guò)批量導(dǎo)入游客信息的方式間接改變子組件中游客信息。最后父組件獲取到全部游客信息在提交給后臺(tái)。

<div style={{ marginTop: 20 }}>
{getFieldDecorator('info', {
initialValue: this.state.info,
}
)(<OrderPeople handlepeople={this.peopleNumChange.bind(this)} handlecantact={this.cantactNumChange.bind(this)} />)}
</div>

OrderPeople為封裝的子組件,組件內(nèi)部有兩個(gè)函數(shù),保存函數(shù)和刪除函數(shù),這兩個(gè)函數(shù)對(duì)表格數(shù)據(jù)進(jìn)行更改之后要更新父組件中的游客信息,此時(shí)父組件會(huì)向子組件自動(dòng)傳遞一個(gè)onChange函數(shù),使用onChange函數(shù)來(lái)更新父組件的Value值,這里內(nèi)部實(shí)現(xiàn)是用的setFieldValue改變組件的值

remove(key) {
 const newData = this.state.data.filter(item => item.key !== key);
 this.setState({ data: newData });
 this.props.onChange(newData);
}

在組件外部進(jìn)行批量導(dǎo)入的時(shí)候,對(duì)info數(shù)據(jù)進(jìn)行修改,起初數(shù)據(jù)改變之后,在父組件中嘗試setState發(fā)現(xiàn)無(wú)效,后改成setFieldsValue才生效,組件的值通過(guò)setFieldValue置了某個(gè)值之后,就不能通過(guò)setState改變initialValue來(lái)改變其值了。

for (var i = 0; i < data.length; i++) {
  data[i].key = `NEW_Excel_ID_${i}`;
 }
 this.setState({
   info: data,
 });
setFieldsValue({
  info: this.state.info,
 });

注意:initialValue設(shè)置的值本應(yīng)該屬于Select可供選的數(shù)據(jù)中某一個(gè),select框顯示的內(nèi)容就是我們所希望的紅包名稱,提交form表單的時(shí)候,值就是Id;如果設(shè)置的值在Select可供選數(shù)據(jù)中找不到(例如:這里的select可供選數(shù)據(jù)是redPackets),那么顯示的就是Id而不是名稱。

所以我們?cè)谠O(shè)置initialValue的時(shí)候,應(yīng)該填寫的是下拉列表中包含option的value的值。

以上這篇解決ant Design中Select設(shè)置initialValue時(shí)的大坑就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解vue中axios封裝與api接口封裝管理

    詳解vue中axios封裝與api接口封裝管理

    axios的封裝和api接口的統(tǒng)一管理,其實(shí)主要目的就是在幫助我們簡(jiǎn)化代碼和利于后期的更新維護(hù),在vue項(xiàng)目中,和后臺(tái)交互獲取數(shù)據(jù)這塊,我們通常使用的是axios庫(kù),本文就給大家介紹一下axios封裝與api接口封裝管理,需要的朋友可以參考下
    2023-06-06
  • vue組件傳值的11種方式總結(jié)

    vue組件傳值的11種方式總結(jié)

    這篇文章主要介紹了vue組件傳值的11種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路

    ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路

    在處理一寫數(shù)據(jù)量特別大的情況下,我們不能把后端的數(shù)據(jù)一次性全部拿到前端在table表格中展示,為了考慮性能優(yōu)化,使用了滾動(dòng)加載表格數(shù)據(jù),這篇文章主要介紹了ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路,需要的朋友可以參考下
    2024-07-07
  • 詳解vue修改elementUI的分頁(yè)組件視圖沒(méi)更新問(wèn)題

    詳解vue修改elementUI的分頁(yè)組件視圖沒(méi)更新問(wèn)題

    這篇文章主要介紹了詳解vue修改elementUI的分頁(yè)組件視圖沒(méi)更新問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • vue加載動(dòng)畫element ui V-loading屬性的踩坑記錄

    vue加載動(dòng)畫element ui V-loading屬性的踩坑記錄

    這篇文章主要介紹了vue加載動(dòng)畫element ui V-loading屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 記一次微信小程序與webviewH5通信的踩坑記錄

    記一次微信小程序與webviewH5通信的踩坑記錄

    uniapp開(kāi)發(fā)小程序的過(guò)程中主、分包有大小限制,隨著業(yè)務(wù)的增加,使用web-view加載H5的方式,往往純加載并不能滿足業(yè)務(wù)需求,這個(gè)時(shí)候就得了解小程序與H5的交互,這篇文章主要給大家介紹了關(guān)于微信小程序與webviewH5通信的踩坑記錄,需要的朋友可以參考下
    2024-07-07
  • VUE3封裝一個(gè)Hook的實(shí)現(xiàn)示例

    VUE3封裝一個(gè)Hook的實(shí)現(xiàn)示例

    本文主要介紹了VUE3封裝一個(gè)Hook的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • 詳解Vuex的屬性

    詳解Vuex的屬性

    Vuex是專為Vue.js應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式,這篇文章主要介紹了Vuex的屬性,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Message組件實(shí)現(xiàn)發(fā)財(cái)U(kuò)I?示例詳解

    Message組件實(shí)現(xiàn)發(fā)財(cái)U(kuò)I?示例詳解

    這篇文章主要為大家介紹了Message組件實(shí)現(xiàn)發(fā)財(cái)U(kuò)I的手寫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue結(jié)合Axios+v-for列表循環(huán)實(shí)現(xiàn)網(wǎng)易健康頁(yè)面(實(shí)例代碼)

    vue結(jié)合Axios+v-for列表循環(huán)實(shí)現(xiàn)網(wǎng)易健康頁(yè)面(實(shí)例代碼)

    這篇文章主要介紹了vue結(jié)合Axios+v-for列表循環(huán)實(shí)現(xiàn)網(wǎng)易健康頁(yè)面,在項(xiàng)目下安裝axios,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評(píng)論

乌兰浩特市| 安庆市| 海晏县| 南城县| 河北区| 广水市| 德令哈市| 荆门市| 宾川县| 岳阳市| 教育| 全南县| 平远县| 云安县| 河池市| 隆回县| 舞钢市| 鹤岗市| 安图县| 壶关县| 桃园县| 巴南区| 津市市| 宁波市| 石河子市| 哈尔滨市| 九江市| 行唐县| 邮箱| 武功县| 施秉县| 新野县| 宁晋县| 临颍县| 屏东市| 安庆市| 沾益县| 高唐县| 麻栗坡县| 浦江县| 望谟县|