通量状态.update

Posted

技术标签:

【中文标题】通量状态.update【英文标题】:Flux state.update 【发布时间】:2020-02-02 01:00:52 【问题描述】:

我是 Flux 库的新手,并且一直在通过 tutorial 处理我的项目。我有点迷失在我们编辑待办事项的地方。特别是,我对这段代码感到困惑:

case TodoActionTypes.TOGGLE_TODO:
    return state.update(
      action.id,
      todo => todo.set('complete', !todo.complete),
    );

我一直在 google 上搜索 Flux 中的“.update”方法,但每次搜索都只是将我重定向到 Flux 初学者指南,它没有引用任何 .update 方法。

现在,我的状态应该包含如下所示的内容:

state = id1: 
        
         foo: 'bar', 
         fizz:'buzz',
         

我的目标是创建一个可编辑的属性,用户可以将存储在 foo 中的值更新为他们喜欢的任何值。目前,我没有看到使用通量使用的 state.update 方法的明确路径。我想知道 state.update 如何在不断变化中工作,以及如何使用它来编辑存储在 foo 中的给定 id 的值。

编辑:对 react Flux 教程中文档的进一步探索将我带到了这段代码:

      case TodoActionTypes.EDIT_TODO:
    return state.setIn([action.id, 'text'], action.text);

虽然我仍然不清楚 set.update 和 state.setIn 方法是如何工作的,但我至少找到了继续我的项目的方法。话虽如此,我非常不喜欢复制和粘贴我的代码,至少不了解这些方法应该如何工作,它们需要什么参数等。我仍然想了解更多关于这些方法的信息。

编辑 2:有人向我指出这来自 Immutable.js,而不是 Flux。 The docs for Immutable 提供进一步说明。

【问题讨论】:

你的意思是this one? 这似乎是 update() 的来源。我从没想过它可能来自不可变库——非常感谢! 不错。仅供参考,现在更流行的 Flux 替代品是(可以说更简单的)Redux 库,而 ImmutableJS 的替代品是immutability-helper。在确定一个框架之前探索您的选择。 【参考方案1】:

该函数来自 Immutable.js 库,而不是我之前认为的来自 React。

【讨论】:

以上是关于通量状态.update的主要内容,如果未能解决你的问题,请参考以下文章

如何在通量存储中异步加载初始状态?

关于多功能应用程序的状态与通量存储的问题

使用 websocket 反应通量更新循环

刷新反应组件或通量/减少中的逻辑?

使用通量商店

通量商店改变其他商店