我有一个包含表单数据的组件。 Query
用于获取数据。有Mutation
可以使数据突变。更改后的输入值使用setState
存储在React组件中。
现在的问题是,我在Apollo中有一些状态,在React组件中有一些状态–并且togheter它们代表我的状态。我需要使它们保持同步-也就是说,应将它们更改为原子操作并恰好触发一个渲染。
我的印象是apollo-link-state
是客户端状态的答案,因此我尝试使用该地址重新实现表单。尽管解决了这个特定问题,但它是一个更为冗长的解决方案,性能很多更差,因此我出于这些原因决定重新使用setState
。
我现在正在做的一个肮脏的技巧是写入Apollo缓存,然后更新React组件的状态。尽管它对于该组件及其当前使用方式似乎有效,但它可能导致争用情况,并且在两个更新之前,状态都是无效的(假定它们按照预期的顺序完成执行)。现在,我的Mutation.update
方法以以下结尾:
cache.writeQuery({
query: GET_TODOS,
data: nextState
});
setTimeout(() => {
this.setState({
changedTodos: {},
});
}, 500);
这不是理想的。感谢您寻找解决此问题的方法的帮助。