reactjs - 如何替换redux中的数组数据?
问题描述
我需要用另一个数组中的新数据替换数组中的一些数据。我执行了一个循环,其中我将某些值中的单词删除为小写。现在我想更新数据,但由于某种原因它没有更新。
const initialState = {
list: []
};
case Constants.dataNodes.success: {
const newState = { ...state };
newState.list = [...newState.list, ...action.payload];
const filterFQDN = [];
for (let i = 0; i < newState.list.length; i++) {
filterFQDN.push(newState.list[i].fqdn.toLowerCase());
}
for (let a = 0; a < newState.list.length; a++) {
for (let b = 0; b < filterFQDN.length; b++) {
if (filterFQDN[b] === newState.list[a]) {
return newState.list = [...newState.list[a].fqdn, ...filterFQDN[b]];
}
}
}
}
解决方案
您可以浅拷贝现有状态,然后将现有 state.list 浅拷贝到一个新数组中,并将有效负载附加到末尾。将此新数组映射到另一个数组,您可以在其中使用toLowerCase()
该fqdn
属性。
case Constants.dataNodes.success: {
const newState = {
...state,
list: [...state.list, ...action.payload].map((el) => ({
...el,
fqdn: el.fqdn.toLowerCase()
}))
};
}
由于您从一个空数组开始,您应该只需要传入toLowerCase
的新数据,因此您可以每次映射有效负载而不是整个状态数组。
case Constants.dataNodes.success: {
const newState = {
...state,
list: [
...state.list,
...action.payload.map((el) => ({
...el,
fqdn: el.fqdn.toLowerCase()
}))
]
};
}
推荐阅读
- ios - React-Native 状态不更新
- rabbitmq - NServiceBus 延迟重试仅在一个队列上配置
- ibm-midrange - SYSPARTITIONSTAT 中缺少 PF
- c# - Visual Studio 中的静默错误 SQL80001(SQL Server 工具)
- python - 将 JSON 对象导入 MySQL 列的问题
- spring-boot - 将 Svelte 捆绑为带有资产(如图像、svg 文件)的 Web 组件
- r - 如何在R中分别从不同水文年的多个站点的每日时间序列数据集中计算年平均温度?
- cordova - Cordova 如何在更改时查看文件并重建
- python - Tkinter 完美正方形的 X 和 Y 是多少?
- user-interface - 如何在 gitlab-ci 上启动一个 selenoid?