查看Apollo link state我可以了解如何通过使用突变或直接使用 cache.writeData({ data })
将值写入/更新到本地存储/缓存。
但是我如何直接检索缓存的值以用作突变的变量?或者我是否需要在第一个查询上使用 @client 进行第二个查询?
注意:如果我使用 ApolloProvider,我可以访问缓存,但它看起来像这样:{cache.cache.data.$ROOT.data.myVariable}
最佳答案
您可以将 Mutation 组件嵌套在 Query 组件中。就像下面这样。如果您经常这样做,那么您可以创建自己的包装器组件。
或者您可以执行client.readQuery
,如此处文档中所示:https://www.apollographql.com/docs/react/advanced/caching.html#readquery .
const ADD_TODO = gql`
mutation addTodo($type: String!) {
addTodo(type: $type) {
id
type
}
}
`;
<Query query={gql`
{
myVariable @client
}
`>
{({ data: { myVariable }}) => {
return (
<Mutation mutation={ADD_TODO}>
{(addTodo, { data }) => (
<div>
<form
onSubmit={e => {
e.preventDefault();
addTodo({ variables: { type: myVariable } });
input.value = "";
}}
>
<input
ref={node => {
input = node;
}}
/>
<button type="submit">Add Todo</button>
</form>
</div>
)}
</Mutation>
</Query>
关于javascript - 如何从 Apollo graphql 客户端状态检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321808/