GraphQL、Redux、React。间隔保存状态

Posted

技术标签:

【中文标题】GraphQL、Redux、React。间隔保存状态【英文标题】:GraphQL, Redux, React. Saving state on intervals 【发布时间】:2017-09-22 00:29:06 【问题描述】:

大家好,

我正在用 React/Redux 和 GraphQL/GraphCool 构建一个“复杂的”社交英语词汇“游戏”

在应用程序处于活动状态时仅将所有状态保存到 redux,并且仅在 5 分钟 / 10 分钟间隔和/或用户退出应用程序时将用户/游戏状态分派到后端,这是一种最佳做法吗? ?

感觉每次状态变化都会产生不必要的请求?

我的想法是否正确?

谢谢!

【问题讨论】:

【参考方案1】:

有趣的想法,我认为你绝对可以让它发挥作用。但是,我认为您可能会发现这些请求无论如何都非常便宜,并且您应该延迟优化,直到您发现需要它为止。如果没有必要,那么花在这上面的时间将是浪费。

我担心您可能会不断遇到因试图在不限制可用性的情况下限制调用而引发的并发症,其方式比您最初预期的要多。

除非您在开始编程之前已计划好一切,否则请选择 (1) 使其正常工作,(2) 使其正确,(3) 使其快速,最后一步将包括任何降低成本的优化。

【讨论】:

感谢回复,我已经实现了将初始数据从后端加载到redux store,我觉得从长远来看这可能是最容易使用的,redux很有趣开发经验。通过这种方法,我的组件不会被 GraphQL 查询弄得一团糟。太难了,我将尝试使用 Apollo 方法以及一些组件,看看什么效果最好。 我只想强调首先关注核心价值并将优化延迟到您真正需要它的重要性。通常在使用新系统时,您会发现您的用户会将其引导到与您最初计划不同的路径上。早期的优化会减慢您在此过程中的速度,并最终导致产品质量更差。这是 Graphcool 的全部前提 - 快速验证并与您的用户一起改进您的产品。【参考方案2】:

好问题。

这取决于您尝试通过您的应用实现的目标。它归结为用户离开应用的频率,以及您希望保存它的频率。

如果用户在 5 到 10 分钟的时间间隔内离开应用程序,而您的网站碰巧没有保存它,那将是相当糟糕的用户体验,因为该用户会回来发现他们忘记了自己在其中的位置游戏。因此,诀窍是在一次可以批处理的数量和频率之间找到平衡,在这种情况下,如果您的用户在任何给定时间关闭应用程序,他们都不会觉得他/她的操作没有被保存。

希望这会有所帮助!

【讨论】:

我同意,虽然应该有一些我可以使用的东西,例如“你确定要离开这个网站吗?”并使用该特定时间作为“生命周期”将数据发送到后端。或类似的东西。感谢您的回复:) 是的,您可以尝试在onLeave 的基础上持久化数据:)

以上是关于GraphQL、Redux、React。间隔保存状态的主要内容,如果未能解决你的问题,请参考以下文章

Reactql - 使用 graphql 的 react-redux

如何使用 react、redux 和 graphql 解决“未定义的 proptype”错误

在使用 django 和 react 时,用 apollo 和 graphql 替换 redux 是个好主意吗?

React Native 状态管理(Redux、Context API 或 Graphql)

“ES7 React/Redux/GraphQL/React-Native 片段”不适用于 javascript 文件。除了安装它,我还需要配置其他东西吗?

如何在 React 中使用 Redux Store 和 GraphQl 进行查询