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

React關(guān)于antd table中select的設(shè)值更新問題

 更新時間:2024年03月22日 09:56:07   作者:jwensh  
這篇文章主要介紹了React關(guān)于antd table中select的設(shè)值更新問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題 1. 默認(rèn)值問題(沒有顯示placeholer)

描述:

正常情況下,表格一列下不同行,可能有不同值,這些值設(shè)值到 select 希望展示不同的樣式;

如空值(0;’’),應(yīng)該顯示 placeholder

<Select
  showSearch
  suffixIcon={<SearchOutlined />}
  style={{ width: 150 }}
  placeholder="請選擇設(shè)置項"
>
...
</Select>

上面的寫法會顯示 placeholder 內(nèi)容,但是沒有進行設(shè)值操作

// react + typescript
render : (text: React.ReactNode, record: TaskListType) => (
    <Select
      showSearch
      value={text as string}
      suffixIcon={<SearchOutlined />}
      style={{ width: 150 }}
      placeholder="請選擇設(shè)置項"
    >
    ...
    </Select>
)
  • 上面 text 是 antd table column 傳過來的值,且值是空值
  • 結(jié)果:還是不能展示 placeholder
  • 這里直接說結(jié)論吧,不吃丸子了

select 的 value、defaultValue、key

defaultValue 和 value 區(qū)別 ?

defautValue 指定默認(rèn)值,也就是我們頁面加載時,通過 dataSource 設(shè)置進來的數(shù)據(jù);

value 指定當(dāng)前選中值,通過下拉列表 option 選中后的值;

問題:使用defaultValue會有一個問題,對頁面進行數(shù)據(jù)處理后數(shù)據(jù)沒有及時更新,需要用 value 解決此問題

解決:空值展示 placeholder ,需要設(shè)置為 undefined

// react + typescript
render : (text: React.ReactNode, record: TaskListType) => (
    <Select
      showSearch
      value={record.setting === '' ? undefined : record.setting}
      suffixIcon={<SearchOutlined />}
      style={{ width: 150 }}
      placeholder="請選擇設(shè)置項"
    >
    ...
    </Select>
)

官網(wǎng)看到:

export type SelectValue = RawValue | RawValue[] | LabeledValue | LabeledValue[] | undefined;

也實驗過 null ts eslint 直接提示不行,所以,想要了解其深度原理,可看源碼

問題2. 更新一行數(shù)據(jù)后,select 的 selectValue 狀態(tài)沒有變化

更新 select 的值有兩個渠道

  • 1.通過下拉框選擇 option
  • 2.其他事件更新了當(dāng)前行數(shù)據(jù)(如: setting=‘user’ => setting=’’)

第二個方案應(yīng)該是我們經(jīng)常用的,如下寫法是不生效的

render : (text: React.ReactNode, record: TaskListType) => (
    <Select
      showSearch
      value={record.setting === '' ? undefined : record.setting}
      suffixIcon={<SearchOutlined />}
      style={{ width: 150 }}
      placeholder="請選擇設(shè)置項"
    >
    ...
    </Select>
)


// 更新操作是 Hooks 函數(shù)直接 setTaskList([...dataSource])

不管使用 value 還是 defaultValue 都不生效;

解決:為 select 添加一個 key 的 props

實現(xiàn)非受控組件(用defaultValue),兩個辦法

  • 第一個服務(wù)端沒有返回數(shù)據(jù)的時候,不 render Select,render 一個占位的 placeholder;
  • 給 Select 加一個 key,值為 defaultValue;
render : (text: React.ReactNode, record: TaskListType) => (
    <Select
      showSearch
      value={record.setting === '' ? undefined : record.setting}
      key={record.setting}
      suffixIcon={<SearchOutlined />}
      style={{ width: 150 }}
      placeholder="請選擇設(shè)置項"
    >
    ...
    </Select>
)

問題3. antd table 局部一行數(shù)據(jù)更新

// 某一行數(shù)據(jù)更新調(diào)用的方法
const handleSave = (row: TaskListType) => {
    // 從新將數(shù)據(jù) copy 一波
    const newData = [...dataSource];
    // 找到操作更新的數(shù)據(jù)在源數(shù)據(jù)中的下標(biāo)
    const index = newData.findIndex(item => row.key === item.key);
    // 找到對應(yīng)更新的數(shù)據(jù)
    const item = newData[index];
    // 將新數(shù)據(jù)中的數(shù)據(jù)進行更新
    newData.splice(index, 1, {
      ...item,
      ...row,
    });
    // useState 更新即可
    setTaskList(newData);
  };

總結(jié)

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

相關(guān)文章

  • 新建的React Native就遇到vscode報警解除方法

    新建的React Native就遇到vscode報警解除方法

    這篇文章主要為大家介紹了新建的React Native就遇到vscode報警解除方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 解決react-connect中使用forwardRef遇到的問題

    解決react-connect中使用forwardRef遇到的問題

    這篇文章主要介紹了解決react-connect中使用forwardRef遇到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • React中不適當(dāng)?shù)腍ooks使用問題及解決方案

    React中不適當(dāng)?shù)腍ooks使用問題及解決方案

    在 React 開發(fā)中,Hooks 提供了一種強大的方式來管理組件的狀態(tài)和生命周期,然而,不恰當(dāng)?shù)?nbsp;Hooks 使用可能會導(dǎo)致組件行為異常、性能問題或難以調(diào)試的錯誤,本文將探討 React 中常見的不適當(dāng) Hooks 使用問題,并提供解決方案,需要的朋友可以參考下
    2025-03-03
  • Redux thunk中間件及執(zhí)行原理詳細(xì)分析

    Redux thunk中間件及執(zhí)行原理詳細(xì)分析

    redux的核心概念其實很簡單:將需要修改的state都存入到store里,發(fā)起一個action用來描述發(fā)生了什么,用reducers描述action如何改變state tree,這篇文章主要介紹了Redux thunk中間件及執(zhí)行原理分析
    2022-09-09
  • React 父子組件通信的實現(xiàn)方法

    React 父子組件通信的實現(xiàn)方法

    這篇文章主要介紹了React 父子組件通信的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析

    react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析

    這篇文章主要介紹了react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • react實現(xiàn)組件狀態(tài)緩存的示例代碼

    react實現(xiàn)組件狀態(tài)緩存的示例代碼

    本文主要介紹了react實現(xiàn)組件狀態(tài)緩存的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • React合成事件及Test Utilities在Facebook內(nèi)部進行測試

    React合成事件及Test Utilities在Facebook內(nèi)部進行測試

    這篇文章主要介紹了React合成事件及Test Utilities在Facebook內(nèi)部進行測試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • React調(diào)度系統(tǒng)Scheduler工作原理詳解

    React調(diào)度系統(tǒng)Scheduler工作原理詳解

    這篇文章主要為大家介紹了React調(diào)度系統(tǒng)Scheduler工作原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 使用webpack配置react-hot-loader熱加載局部更新

    使用webpack配置react-hot-loader熱加載局部更新

    這篇文章主要介紹了使用webpack配置react-hot-loader熱加載局部更新,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

海林市| 时尚| 尤溪县| 连山| 中超| 西青区| 固阳县| 隆尧县| 平谷区| 托克逊县| 延寿县| 大安市| 陈巴尔虎旗| 隆林| 凤冈县| 安阳市| 安陆市| 松阳县| 萨迦县| 沈阳市| 香格里拉县| 南江县| 郑州市| 阿坝| 疏附县| 钟祥市| 东丽区| 黔江区| 新余市| 抚远县| 得荣县| 稷山县| 盐边县| 抚宁县| 新建县| 米脂县| 怀宁县| 象州县| 山丹县| 灯塔市| 宜阳县|