В настоящее время у меня есть функция, которая извлекает API и состояние обновления, но она показывает ошибку, когда я назначаю Promise состоянию
type DataState = {
postList: Array<PostInfo>:
};
const [state, setState] = useState<DataState>({ postList: [] });
const handleClick = (postID: number) => {
const newPostsList = state.postList.map(async post => {
if (post.id === postID) {
const likeType = post.myLike
? ReactionType.NoReaction
: ReactionType.ThumbsUp;
const response = await putLike(postID, likeType); // fetch API
if (typeof response !== 'string') {
return {
...post,
myLike: !post.myLike,
reactionCount: post.myLike
? post.reactionCount - 1
: post.reactionCount + 1,
};
}
return post;
}
return post;
});
setState({
postList: newPostsList, // error here
});
}
. Я могу это исправить, используя for
l oop
const handleClick = async (postID: number) => {
const posts = state.postList;
const newPostsList = [];
for (let i = 0; i < posts.length; i++) {
if (posts[i].id == postID) {
const likeType = posts[i].myLike
? ReactionType.NoReaction
: ReactionType.ThumbsUp;
const response = await putLike(postID, likeType); // fetch API
if (typeof response !== 'string') {
newPostsList.push({
...posts[i],
myLike: !posts[i].myLike,
reactionCount: posts[i].myLike
? posts[i].reactionCount - 1
: posts[i].reactionCount + 1,
});
} else {
newPostsList.push(posts[i]);
alert(response);
}
} else {
newPostsList.push(posts[i]);
}
}
setState({
postList: newPostsList,
});
}
Как это исправить, но все еще используя map
? Спасибо за чтение!