gpt4 book ai didi

javascript - 重写一个函数,通过数组中匹配的 id 查找对象,更新值并设置 react 状态

转载 作者:行者123 更新时间:2023-12-02 21:27:15 25 4
gpt4 key购买 nike

下面的函数接收对象内的评级值。当 ID 或问题保持不变时,可以更新评级值。因此,React 状态值应该被更新。有没有办法让这个函数看起来更漂亮/简洁,同时只使用普通的 javascript。

  ratingCompleted = ({ rating, question, id }) => {
let array = this.state.ratingResponses;
const index = array.findIndex(elem => elem.id == id);

if (index === -1) {
array.push({ rating, question, id });
this.setState({ ratingResponses: array });
} else {
array.map(object => {
if (object.id === id) {
object.rating = rating;
return object;
} else {
return object;
}
});
this.setState({ ratingResponses: array });
}
};

最佳答案

确保传播以阻止突变

这可能会更清晰一些,但我想我会展示每个步骤。

const array = [...this.state.ratingResponses]; // spread this so as to make a copy
let updatedArray;


const hasRatingAlready = array.some(item => item.id === id);

if (!hasRatingAlready) {
updatedArray = [...array, { rating, question, id }];
} else {
updatedArray = array.map(item => item.id === id ? {...item, rating} : item);
}

this.setState({ ratingResponses: updatedArray });

关于javascript - 重写一个函数,通过数组中匹配的 id 查找对象,更新值并设置 react 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com