2016-07-22 63 views
0

它是安全的传递this到终极版行动的创建者使用React.createClass withing定义的组件?阵营:如何通过组件的身份Redux的状态

我已经定义了以下减速器:

const unsavedChangesProtectionReducer = handleActions({ 
    [ENABLE_UNSAVED_CHANGES_PROTECTION]: (unsavedChangesProtection, action) => ({protected: true}), 
    [DISABLE_UNSAVED_CHANGES_PROTECTION]: (unsavedChangesProtection, action) => ({protected: false})}, 
    {protected: false} 
) 

多个组件可以设置/取消全球state.unsavedChangesProtection.protected标志,并从问题这个解封出现的标志,因为组件不应该取消它如果其他组件已经在此组件之前设置它。

一种解决方案是,以检查是否标志已经设置,如果没有,将其设置,存储有关组件设置标志组件的内部状态的信息,并且该组件已设置标志未设置,如果内部状态的状态。但是,这违反了DRY原则,因为我必须在每个组件中引入完全相同的登录。

更广义的解决方案是将最后突变为全局状态的组件的身份存储为状态本身的成员,以便每个组件都可以从状态中看到它是否相应地发生更改和取消设置。这是有可能在安装时以实现反应,因为每个部件都重新初始化/卸载

回答

0

当然,在减速机具有setBy财产可以工作,你也将有额外的逻辑添加到componentWillUnmount方法为每可能发生变异,如果该组件负责设置,将触发复位setBy行动的标志组件/不存在标志摆在首位(你不想离开参考这是从DOM,因为它删除组件将阻止所有其他组件更改标志)