3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
apollo 中對(duì)讀寫緩存的查詢以不可變的方式工作。為了做到這一點(diǎn),您必須使用一個(gè)新變量,您正在使用數(shù)據(jù)來寫入緩存。嘗試這樣做:
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貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊
我通過將數(shù)據(jù)定義為對(duì)象 {} 修復(fù)了相同的錯(cuò)誤,
只是通過添加更改了以下代碼= {}
const {
loading,
data: { getPosts: posts } = {}
} = useQuery(FETCH_POSTS_QUERY);

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
我會(huì)接受您的if聲明并將其設(shè)置在 a 中,useEffect以便它檢查數(shù)據(jù)是否是真實(shí)的 onLoad,這樣您就可以在數(shù)據(jù)更改時(shí)將其同步。
const [posts, setPosts] = useState([]);
useEffect(() => {
if (data) {
setPosts(data.getPosts);
}
},[data])
if (posts.length === 0) {
return <h3>No posts as of yet</h3>
}
添加回答
舉報(bào)