2017-02-23 75 views
0

有没有清除状态片段的优雅方法?在我的状态下,我有7个数据片,我想保留一个数据片,同时擦除其余的数据。我是否需要运行每个减速器并手动擦除每个减速器中的切片,或者还有其他方法吗?如何清除状态片段

在此先感谢...

回答

2

你可以做到以下几点:

const resetState =() => ({ 
    type: 'RESET_STATE' 
}) 

const appReducer = combineReducers({ 
    /* your app’s top-level reducers */ 
}) 

const rootReducer = (state, action) => { 
    if (action.type === 'RESET_STATE') { 
    state = undefined 
    } 

    return appReducer(state, action) 
} 

function resetAndUpdateOneSlice() { 
    return (dispatch, getState) { 
    const slice = Object.assign({}, getState().slice) 
    //assuming your slice is an object 
    //just want to demonstrate cloning your data before you reset your state. 
    dispatch(resetState()) 
    dispatch(updateSliceOfState(slice)) 
    } 
} 

这是一个可能的解决方案 - 纯函数和的thunk混合 - 虽然我不知道你为什么要重置你的状态的很多部分。不是我谴责你的决定,我只是想弄清楚一个并非完全人为的用例。

以下是可能的,因为我们正在使用纯函数。

此外,我引用这篇文章,因为它是相当有帮助的。

How to reset the state of a Redux store?

希望这有助于

+0

当用户点击退出按钮,我们需要清理整个状态。但是,当他们点击主页按钮时,我们需要为他们在应用程序中构建的对象清除状态的切片。我们不希望他们的登录凭证等事情被清除。这对我们为什么要清除特定的国家部分是否有意义? – nikotromus

+0

是的,那么这是一个很好的用例。我引用的文章当然适用于您的案例 –