2017-10-16 27 views
0

Dan Abramov hereからの提案に基づいてreduxリセット状態アクションを実装しようとしています。Redux - リセット状態

Index.js:

import {applyMiddleware,createStore} from 'redux'; 
import combineReducers from './reducers/index'; 
import {wrapStore,alias} from 'react-chrome-redux'; 
import thunk from 'redux-thunk'; 
import aliases from './aliases/aliases'; 

const combineAppReducers = (state, action) => { 
    if (action.type === 'LOG_OUT') { 
    state = undefined; 
    } 

    return combineReducers(state, action) 
} 

const middlewares = [alias(aliases), thunk]; 

const store = createStore(combineAppReducers,applyMiddleware(...middlewares)); 

wrapStore(store, { 
    portName: 'example' 
}); 

Reducers.js:私はすべてを正しく設定しているかのように見えます

import {combineReducers} from 'redux'; 
import userAuthReducer from './userAuthReducer'; 
import manageTeamsReducer from './manageTeamsReducer'; 

function lastAction(state = null, action) { 
    return action; 
} 

export default combineReducers({ 
    userAuthReducer,manageTeamsReducer,lastAction 
}); 

をしかし、アプリ、私はセットアップ私の減速をし、そのように保管してきました状態をリセットしていない、誰かが私が間違っている場所を見つけることができますか?ここで

は、私はより密接に続いて、その上に別の記事です:

https://medium.com/@agungsantoso/how-to-reset-the-state-of-a-redux-store-7f9d85b190bc

+0

あなたは空のオブジェクトの状態を設定しようとしたことがありますか? 'state = {}'のように? – lumio

+0

また、どのようなエラーがありますか? – lumio

+0

私はそれが最善の方法ではないと思っていますが、状態を最初の値ディスパッチ: '@@ INIT'アクションに戻すことができます。 – Hitmands

答えて

0

それは仕事の罰金です。 あなたのスニペットを確認できます。 エラーログをアップロードできますか?

function lastAction(state = null, action) { 
 
    return action; 
 
} 
 

 
function counter(state = 0, action) { 
 
    if (action.type === 'INC') { 
 
     return state+1; 
 
    } 
 
    
 
    return state; 
 
} 
 

 
const combineAppReducers = Redux.combineReducers({ 
 
    lastAction, 
 
    counter 
 
}); 
 

 
const combineReducers = (state, action) => { 
 
    if (action.type === 'LOG_OUT') { 
 
    state = undefined; 
 
    } 
 
    return combineAppReducers(state, action) 
 
} 
 

 
const store = Redux.createStore(combineReducers); 
 

 
const root = document.createElement('ul'); 
 
document.body.append(root); 
 
let unsubscribe = store.subscribe(() =>{ 
 
    const li = document.createElement('li'); 
 
    li.append(store.getState().counter); 
 
    root.append(li); 
 
}) 
 

 
store.dispatch({type: 'INC'}); 
 
store.dispatch({type: 'INC'}); 
 
store.dispatch({type: 'INC'}); 
 
store.dispatch({type: 'LOG_OUT'}); 
 
store.dispatch({type: 'INC'});
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/redux/3.7.2/redux.js"></script> 
 
</head> 
 
<body> 
 
</body> 
 
</html>

+0

私はコンパイルするコードを持っています(上記で編集済みです)。私の行動はすべて、彼らが新しい統合にどのようになっているのか動作しますが、ログアウトアクションはまだ状態をリセットしません... –