Ale*_*num 5 reactjs graphql react-apollo apollo-client
我有一个带有表单数据的组件。A Query用于获取数据。有一个Mutation变异数据。更改后的输入值使用来存储在React组件中setState。
现在的问题是,我在Apollo中有一些状态,在React组件中有一些状态,而Togheter它们代表我的状态。我需要使它们同步-也就是说,应将它们更改为原子操作,并仅触发一个渲染。
我得到的印象apollo-link-state是客户端状态的答案,我尝试使用它来重新实现表单。虽然解决了这个特定问题,但它是一个更为冗长的解决方案,性能却差很多,因此我出于这些原因决定重新使用setState。
我现在正在做的一个肮脏的技巧是写入Apollo缓存,然后更新React组件状态。尽管它对于该组件及其当前使用方式似乎有效,但它可能导致争用条件,并且在两个更新之前,状态都是无效的(假定它们按照预期的顺序完成执行)。现在,我的Mutation.update方法以以下内容结束:
cache.writeQuery({
query: GET_TODOS,
data: nextState
});
setTimeout(() => {
this.setState({
changedTodos: {},
});
}, 500);
Run Code Online (Sandbox Code Playgroud)
这是不理想的。非常感谢您找到解决此问题的方法的帮助。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |