如果元素已经存在,如何更新到数组
How to update to an array if element already exists
我正在制作一个 React-Native 应用程序。感谢大家的帮助,除了切换 YES 和 NO 之外,我可以以某种方式完成这项工作。一旦用户点击了一个按钮,我只想检查点击的项目数据是否已经存在于状态中,如果是的话我想更新它。如果不存在,则应将其作为新项目添加到状态。
我已经编写了上述逻辑,我的代码可以运行,但没有返回正确的输出,元素没有正确地添加或更新到状态数组。我该如何修复此代码?
我想生成这样的输出
[{
chelistid:231,
validiary : "YES",
remark : "Hello"
},{
chelistid:232,
validiary : "NO",
remark : "asddddd"
}]
我的代码
const [reqData, setReqData] = useState([]);
//Modify yes clicked
const yesClicked = (element) => {
let req = {
"chelistid": element.chelistid,
"validiary": "Yes",
"remark": element.remark
}
createCheckList(req);
}
//Modify no clicked
const noClicked = (element) => {
let req = {
"chelistid": element.chelistid,
"validiary": "No",
"remark": element.remark
}
createCheckList(req);
}
const createCheckList = (data) => {
const index = reqData.findIndex(x => x.chelistid === data.chelistid)
var modifiedArray = reqData
if (index !== -1) {
//Remove the element from the array
modifiedArray.splice(index, 1);
}
setReqData([modifiedArray, data]);
}
问题是您似乎没有展开数组来附加数据元素。 [modifiedArray, data]
你在做什么,你正在创建一个数组,其中包含一个数组和类似 [[modified array content here], data]
的数据。但实际上,您想改为附加到修改后的数组。为此,您需要使用称为扩展语法的 ...
来扩展修改后的数组。 (Learn here) 因此,您的代码如下所示:
setReqData([...modifiedArray, data]);
我正在制作一个 React-Native 应用程序。感谢大家的帮助,除了切换 YES 和 NO 之外,我可以以某种方式完成这项工作。一旦用户点击了一个按钮,我只想检查点击的项目数据是否已经存在于状态中,如果是的话我想更新它。如果不存在,则应将其作为新项目添加到状态。
我已经编写了上述逻辑,我的代码可以运行,但没有返回正确的输出,元素没有正确地添加或更新到状态数组。我该如何修复此代码?
我想生成这样的输出
[{
chelistid:231,
validiary : "YES",
remark : "Hello"
},{
chelistid:232,
validiary : "NO",
remark : "asddddd"
}]
我的代码
const [reqData, setReqData] = useState([]);
//Modify yes clicked
const yesClicked = (element) => {
let req = {
"chelistid": element.chelistid,
"validiary": "Yes",
"remark": element.remark
}
createCheckList(req);
}
//Modify no clicked
const noClicked = (element) => {
let req = {
"chelistid": element.chelistid,
"validiary": "No",
"remark": element.remark
}
createCheckList(req);
}
const createCheckList = (data) => {
const index = reqData.findIndex(x => x.chelistid === data.chelistid)
var modifiedArray = reqData
if (index !== -1) {
//Remove the element from the array
modifiedArray.splice(index, 1);
}
setReqData([modifiedArray, data]);
}
问题是您似乎没有展开数组来附加数据元素。 [modifiedArray, data]
你在做什么,你正在创建一个数组,其中包含一个数组和类似 [[modified array content here], data]
的数据。但实际上,您想改为附加到修改后的数组。为此,您需要使用称为扩展语法的 ...
来扩展修改后的数组。 (Learn here) 因此,您的代码如下所示:
setReqData([...modifiedArray, data]);