Javascript 如何从Apollo graphql客户端状态检索值
通过查看,我可以看到如何使用变异或直接使用Javascript 如何从Apollo graphql客户端状态检索值,javascript,reactjs,graphql,apollo,react-apollo,Javascript,Reactjs,Graphql,Apollo,React Apollo,通过查看,我可以看到如何使用变异或直接使用cache.writeData({data})将值写入/更新到本地存储/缓存 但是,我如何直接检索缓存的值以用作变异的变量呢?或者我需要在第一个查询中使用@client进行链2查询吗 注意:如果我使用Apollo Provider,我可以访问缓存,但它看起来是这样的:{cache.cache.data.$ROOT.data.myVariable}您可以将突变组件嵌套在查询组件中。如下图所示。如果您经常这样做,那么您可以创建自己的包装器组件 或者您可以执行
cache.writeData({data})
将值写入/更新到本地存储/缓存
但是,我如何直接检索缓存的值以用作变异的变量呢?或者我需要在第一个查询中使用@client进行链2查询吗
注意:如果我使用Apollo Provider,我可以访问缓存,但它看起来是这样的:
{cache.cache.data.$ROOT.data.myVariable}
您可以将突变组件嵌套在查询组件中。如下图所示。如果您经常这样做,那么您可以创建自己的包装器组件
或者您可以执行客户端。readQuery
,如此处的文档所示:
const ADD\u TODO=gql`
突变addTodo($type:String!){
addTodo(类型:$type){
身份证件
类型
}
}
`;
{({data:{myVariable}}})=>{
返回(
{(addTodo,{data})=>(
{
e、 预防默认值();
addTodo({variables:{type:myVariable}});
input.value=“”;
}}
>
{
输入=节点;
}}
/>
添加待办事项
)}
谢谢Casey,我认为这是最好的主意。请注意,我发现我几乎没有使用@client,因为我需要的所有东西都在缓存中,可以使用缓存优先或仅缓存的fetchPolicy调用
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>