这可能是缓存“对象不变性”的结果。解决方法是使用update函数手动更新状态,并使用update函数来强制更新组件。以下是一个示例:
import { graphqlOperation } from 'aws-amplify';
import { updatePost } from './graphql/mutations';
async function updatePostStatus(postId, newStatus) {
const updatedPost = await API.graphql(graphqlOperation(updatePost, {
input: {
id: postId,
published: newStatus
}
}));
// Manually update state using update function
setUpdatedPost(prevPost => ({
...prevPost,
published: updatedPost.data.updatePost.published
}));
// Force component to update using update function
updateComponent(prevState => ({ ...prevState }));
}
此代码会将名为“updatePostStatus”的函数导出,该函数将postId和新状态作为参数传入。它将通过Apollo GraphQL客户端执行mutation,并使用update函数手动更新状态和组件。