Redux 更新Graphql树,不使用突变击中后端
对于一些状态管理数据集,我目前使用graphql而不是Redux。我发现我正在使用服务器端的变异,但是如果我的UI/前端只关心它,为什么我必须创建一个变异,然后攻击服务器。是否有一种方法可以省略该部分并仅通过前端/UI的一些更新来设置graphql数据树 这是我的变异Redux 更新Graphql树,不使用突变击中后端,redux,graphql,Redux,Graphql,对于一些状态管理数据集,我目前使用graphql而不是Redux。我发现我正在使用服务器端的变异,但是如果我的UI/前端只关心它,为什么我必须创建一个变异,然后攻击服务器。是否有一种方法可以省略该部分并仅通过前端/UI的一些更新来设置graphql数据树 这是我的变异 try { await updateSomething({ // front end only cares about these values, but I do // need them across v
try {
await updateSomething({
// front end only cares about these values, but I do
// need them across various components etc..
variables: {
id,
name
},
update: (store, { data: { someData } }) => {
const data = store.readQuery({ query: MY_QUERY });
data.someArray.push(someData);
store.writeQuery({ query: MY_QUERY, data });
}
});
} catch (e) {
// deal with error
}
当然,我必须为此在前端编写一个变种,但在后端也要编写一个相应的变种/解析器。。。但是,如果我的数据来自前端,并且对数据库等没有影响。。。它只需要充当redux状态机。我如何在不与服务器端变异/解析程序交互的情况下实现这一点?既然看起来您已经在使用apollo,您应该利用它。状态链接有效地允许您通过apollo管理客户端状态 您的客户端设置如下所示:
import { ApolloClient } from 'apollo-client'
import { ApolloLink } from 'apollo-link'
import { InMemoryCache } from 'apollo-cache-inmemory'
import { HttpLink } from 'apollo-link-http'
import { withClientState } from 'apollo-link-state'
const cache = new InMemoryCache()
const stateLink = withClientState({
cache,
resolvers,
defaults,
})
const client = new ApolloClient({
cache,
link: ApolloLink.from([stateLink, new HttpLink()]),
})
默认值
传递给withClientState
定义初始状态,而解析器
对象定义仅用于客户端查询和转换的行为
常量默认值={
傅:{
__typename:'Foo',
酒吧:“酒吧”,
}
}
然后,您可以使用@client
指令识别应使用状态链接解决的突变和查询:
mutation DoSomething($bar: String) {
updateFoo(bar: $bar) @client
}
要获得更完整的解释和很好的示例。这似乎可行,但伙计们,这看起来太严厉了,只是为了满足我的需要。我很感激你的回答,也很感激你的深入研究。
mutation DoSomething($bar: String) {
updateFoo(bar: $bar) @client
}