1

我很想将错误数据添加到商店。例如,

var store = {
      error: {msg:'',info:{}},
      others: '',
      etc: ''
}

在应用程序中出现错误时,操作将通过调度程序更新错误,并且错误面板将显示给用户。错误面板的渲染通过测试错误消息状态有条件地显示 div。

在下一个用户输入时,一个动作,即 userAction,模型状态将由调度程序更新。问题:仍然会显示错误面板,因为错误消息状态不是“重置”。

userAction 将设置其他非错误状态。Flux 将针对此更改发出更改。然而,如果我遵循 Flux 模型,也应该在此操作中重置错误,但这会导致发出通知,通知 UI 进行更新。似乎不正确。

我的想法是:1.不要把这种东西放在店里?或者, 2. 商店将为每次非错误状态更新重置错误状态。或者,3. 每个动作还将包含一个用于任何状态更新的错误状态对象。

目前我的解决方案是清除存储功能中的错误数据:

}, function(payload){
    API.setError({msg:'',info:{}});

    switch(payload.actionType){
        case "BRANCH_SELECTED": 

这样做的非白痴方式是什么?我是 React 和 Flux 的新手,所以我确定这是新手问题。我使用McFly作为 Flux 实现。

4

1 回答 1

0

虽然你的问题可能已经在评论中得到了回答:我在我当前的React项目中思考了一个类似的问题,所以我将分享我的经验和结果。我使用的是fluxxor而不是McFly,但这在这里无关紧要。

由于通量存储应该包含所有应用程序状态和逻辑,我得出的结论是,如果您在存储函数中以编程方式有条件地清除错误状态,那么这绝对没问题,并且在通量架构的意义上

在我的理解中,将与特定存储相关的错误状态处理保持在该存储中是有意义的(因此可能由少数侦听组件接收和呈现)。正如@fisherwebdev所提到的,存储逻辑应该确定错误的状态,特别是根据它注册回调函数的操作类型。在您的情况下,请考虑BRANCH_SELECTION_ERROR调度导致设置错误状态的类型操作。另一方面,BRANCH_SELECTED动作类型应始终清除此状态。

我的具体解决方案实际上是调用“私有”存储函数clearErrorMessages(),或者clearFormValidationMesssages()只是根据当前调度的操作清除状态变量。

全局错误,即与应用程序状态相关的错误,如服务器通信超时,可能会进入一些“appStore”并以类似的方式更新或清除。因此,例如路由器转换可能会导致全局错误状态被清除。

于 2015-04-27T08:53:59.800 回答