3 回答
TA贡献1817条经验 获得超14个赞
apollo 中对读写缓存的查询以不可变的方式工作。为了做到这一点,您必须使用一个新变量,您正在使用数据来写入缓存。尝试这样做:
const [createPost] = useMutation(CREATE_POST_MUTATION, {
variables: values,
update (proxy, result) {
const data = proxy.readQuery({
query: FETCH_POSTS_QUERY
})
const new_post = result.data.createPost //here's the new var
proxy.writeQuery({
query: FETCH_POSTS_QUERY,
data: { getPosts: [new_post, ...data.getPosts] } // here you're using that var to write the cache
})
values.body = ''
}
})
TA贡献1752条经验 获得超4个赞
我通过将数据定义为对象 {} 修复了相同的错误,
只是通过添加更改了以下代码= {}
const {
loading,
data: { getPosts: posts } = {}
} = useQuery(FETCH_POSTS_QUERY);
TA贡献1712条经验 获得超3个赞
我会接受您的if声明并将其设置在 a 中,useEffect以便它检查数据是否是真实的 onLoad,这样您就可以在数据更改时将其同步。
const [posts, setPosts] = useState([]);
useEffect(() => {
if (data) {
setPosts(data.getPosts);
}
},[data])
if (posts.length === 0) {
return <h3>No posts as of yet</h3>
}
添加回答
举报