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

antd-react使用Select組件defaultValue踩的坑及解決

 更新時(shí)間:2023年05月12日 08:42:24   作者:半糖氣泡。  
這篇文章主要介紹了antd-react使用Select組件defaultValue踩的坑及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

需求背景

有一個(gè)表格,點(diǎn)擊表格每一行的一個(gè)叫"查看數(shù)據(jù)記錄"的按鈕,打開一個(gè)抽屜,會(huì)調(diào)后端一個(gè)接口(這里我們叫它接口A),其中一個(gè)參數(shù)是抽屜里下拉框選中的當(dāng)前id(就是下文中的pid)

問題描述

表格每一行紅框圈出來的這個(gè)按鈕(圖1),點(diǎn)擊后會(huì)彈出一個(gè)抽屜(圖2),抽屜里面有一個(gè)下拉框, 需求要求每次打開都默認(rèn)選中"主版本",  遇到的問題是: 打開表格第二行的抽屜,此時(shí)改變下拉框使其選中"分支一",  然后再去打開表格第三行的抽屜,下拉框選中的id是"主版本"的id,但是顯示的依然是    "分支一"的名字!

圖(1)

圖(2)

--------------------------------分割線--------------------------------

原因分析

前提

這里組件都是類組件寫的,抽屜中的select組件綁定的defaultValue叫pid(下面就直接說pid了),抽屜組件里用了componentWillReceiveProps和componentDidMount兩個(gè)生命周期,接口A在這兩個(gè)生命周期都有調(diào)用, 我在這兩個(gè)鉤子里發(fā)現(xiàn)我每次拿到的pid都是對的,但是切換某一個(gè)抽屜的下拉框,再打開別的抽屜,下拉框顯示的名字永遠(yuǎn)是上次下拉框選擇的名字(但pid是對的)

當(dāng)時(shí)想到的原因如下

1) :  一開始覺得是抽屜關(guān)閉的時(shí)候我沒有重新更新defaultValue綁定的值,于是關(guān)閉抽屜的時(shí)候手動(dòng)更新了一下,但是并沒有如愿解決我的問題

2): 由于此時(shí)我的pid是聲明在state里的數(shù)據(jù),我的pid在這兩個(gè)鉤子里都做了setState為"主版本"的id,更新pid的過程大概就是: 

  • 1.第一次打開表格第二行的抽屜時(shí),  在componentDidMount 更新pid為"主版本"的id, 當(dāng)我切換下拉框?yàn)榉种б粫r(shí), 就setState   pid為"分支一""的pid,
  • 2.基于第一條的操作, 此時(shí)當(dāng)我再打開表格第三行的抽屜時(shí), 只會(huì)執(zhí)行componentWillReceiveProps, 在這個(gè)鉤子, 由于我也setState為"主版本"的id, 所以render里我拿到的pid不是"分支一"id,  而是我們想要的主版本的id,  render里拿到的id也確實(shí)是"主版本"的id, 但是顯示的還是"分支一"
  • 3.基于以上兩條的操作, 在網(wǎng)上找了一下答案, 看到使用componentWillReceiveProps,props改變時(shí)組件才會(huì)重新渲染,  state里的數(shù)據(jù)改變并不會(huì)使子組件刷新, (不過我對這個(gè)說法有點(diǎn)懷疑,因?yàn)閞ender里拿到的數(shù)據(jù)已經(jīng)是更新后的"主版本"的id了), 于是我把pid抽出來,寫在了抽屜的父組件里,由父組件傳過來, 再在這兩個(gè)鉤子里更新父組件里的pid

沒出意外,依然沒有解決問題!!!

3):  既然不行,那我就只能繼續(xù)找原因了,由于之前遇到過一個(gè)類似問題: 

  • 給一個(gè)表單設(shè)置了initValue,但是當(dāng)initValue綁定的值變化時(shí),我的表單顯示的值并沒有更新,有人跟我說使用initValue的時(shí)候,數(shù)據(jù)更新不會(huì)更新頁面,讓我用setFieldsValue,由于之前用setFieldsValue也確實(shí)解決了表單值沒更新的問題,那我就不偷懶了,試試改成表單用setFieldsValue吧! 

結(jié)果又沒出意外,問題依然沒解決!!!

4):  實(shí)在找不到原因了,心態(tài)崩了呀!   不找了,就這樣放了一周,當(dāng)然期間沒有閑著,而是去寫別的任務(wù)改別的bug了,每天都想起來這個(gè)沒解決的bug,睡前都要想一下到底為什么呢?明明拿到了正確的id,為什么名字不對呢..............

解決方案

一周過去了,今天本來該提測 ,結(jié)果后端那里有bug,沒有提測,那我就再找找原因吧,在交給測試測之前盡量解決掉這個(gè)問題,結(jié)果一行代碼解決了困擾了我一周的問題!

就是加了這個(gè)key,就這樣解決了我的問題~~~~~~~~~~~~

tip:

總結(jié)

或許這個(gè)問題很簡單,但是解決這個(gè)問題的那一刻,真的很激動(dòng)! 寫這個(gè)文章只是為了記錄一下這個(gè)讓我印象深刻的問題,同樣給踩到同樣坑的工友一個(gè)參考! 或許我很菜,但我在學(xué)了,如果有說的不夠詳細(xì)或者不對的地方,希望大佬們給我補(bǔ)充更正,先謝為敬! 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • react 國際化的實(shí)現(xiàn)代碼示例

    react 國際化的實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了react 國際化的實(shí)現(xiàn)代碼示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • 解決React報(bào)錯(cuò)Property value does not exist on type HTMLElement

    解決React報(bào)錯(cuò)Property value does not exist&n

    這篇文章主要為大家介紹了React報(bào)錯(cuò)Property value does not exist on type HTMLElement解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React Component存在的幾種形式詳解

    React Component存在的幾種形式詳解

    這篇文章主要給大家介紹了關(guān)于React Component存在的幾種形式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • React useCallback鉤子的作用方法demo

    React useCallback鉤子的作用方法demo

    這篇文章主要為大家介紹了React useCallback鉤子的作用方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的散點(diǎn)圖 (V3版本)

    D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的散點(diǎn)圖 (V3版本)

    散點(diǎn)圖(Scatter Chart),通常是一橫一豎兩個(gè)坐標(biāo)軸,數(shù)據(jù)是一組二維坐標(biāo),分別對應(yīng)兩個(gè)坐標(biāo)軸,與坐標(biāo)軸對應(yīng)的地方打上點(diǎn)。由此可以猜到,需要的元素包括circle(圓)和axis(坐標(biāo)軸),接下來通過本文大家分享D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的散點(diǎn)圖 (V3版本) ,一起看看
    2019-05-05
  • React中state屬性和生命周期的使用

    React中state屬性和生命周期的使用

    這篇文章主要介紹了React中state屬性和生命周期的使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • React如何優(yōu)雅的捕獲異常

    React如何優(yōu)雅的捕獲異常

    捕獲異常是來定位你錯(cuò)誤代碼的。本文主要介紹了 React如何捕獲異常,你知道多少種方法,ErrorBoundary,ErrorBoundary-try-catch等等。本文就來詳細(xì)的介紹一下
    2021-06-06
  • react無限滾動(dòng)組件的實(shí)現(xiàn)示例

    react無限滾動(dòng)組件的實(shí)現(xiàn)示例

    本文主要介紹了react無限滾動(dòng)組件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • React?中使用?react-i18next?國際化的過程(react-i18next?的基本用法)

    React?中使用?react-i18next?國際化的過程(react-i18next?的基本用法)

    i18next?是一款強(qiáng)大的國際化框架,react-i18next?是基于?i18next?適用于?React?的框架,本文介紹了?react-i18next?的基本用法,如果更特殊的需求,文章開頭的官方地址可以找到答案
    2023-01-01
  • React項(xiàng)目打包發(fā)布到Tomcat頁面空白問題及解決

    React項(xiàng)目打包發(fā)布到Tomcat頁面空白問題及解決

    這篇文章主要介紹了React項(xiàng)目打包發(fā)布到Tomcat頁面空白問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

荥阳市| 泾阳县| 广丰县| 鲜城| 南华县| 双流县| 德庆县| 鸡泽县| 万宁市| 岳池县| 龙门县| 松江区| 湛江市| 淳化县| 建水县| 清苑县| 米易县| 泸水县| 嘉定区| 英德市| 遵义市| 兴化市| 乌鲁木齐县| 额尔古纳市| 新密市| 利川市| 闻喜县| 新绛县| 台北市| 东安县| 长葛市| 化州市| 门源| 丰镇市| 洪湖市| 灵璧县| 西平县| 渝中区| 岐山县| 通河县| 开鲁县|