Javascript React redux使用不同的操作获取不同的状态内容

Javascript React redux使用不同的操作获取不同的状态内容,javascript,react-native,redux,react-redux,Javascript,React Native,Redux,React Redux,当我使用这个.props.history.push('login')访问URL和直接访问URL时,我的redux状态不同,如 这是我的Reducer.js const initialState = { userData: null }; function rootReducer(state = initialState, action) { if(action.type === "logout") { return initialState; } e

当我使用这个.props.history.push('login')访问URL和直接访问URL时,我的redux状态不同,如

这是我的Reducer.js

const initialState = {
    userData: null
};  

function rootReducer(state = initialState, action) {
    if(action.type === "logout") {
        return initialState;
    } else if(action.type === "login"){
        return Object.assign({}, state, {
            userData: action.payload
        });
    }
    return state;
};

export default rootReducer;
这是我的Action.js

function logout() {
    return { type: "logout" }
}

function login(payload) {
    return { type: "login", payload }
}

export {logout, login};
这是我的商店

import { createStore } from "redux";
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage'

import rootReducer from "./Reducer";

const persistConfig = {
    key: 'root',
    storage: storage,
}

const persistedReducer = persistReducer(persistConfig, rootReducer);

const store = createStore(persistedReducer);
const persistor = persistStore(store);
export { store, persistor };
当我登录时,我使用这个
store.dispatch(登录(userData))

但是当我用这个得到redux州的时候

var loggedIn = store.getState().userData;
console.log(loggedIn)
当我使用不同的方法访问URL时,会得到不同的结果

当我使用这个.props.history.push('login')转到URL时,loggedIn变量将成为我的数据(这是正确的)

但是我通过在地址栏中粘贴URL来访问URL,loggedIn变量将变为null(这是错误的)

我不知道为什么会发生这种情况,因为我访问的是同一个URL,但结果不同

谢谢。

当您重新加载页面(从URL栏)时,您正在重新加载JavaScript上下文。您的存储将被初始化,就像它是新的一样

当您在历史API中导航时,您将保留当前JavaScript执行上下文,并且存储将保留在内存中

我看到您试图将存储持久化到本地存储上,但是考虑到您的问题,存储的持久化或检索(可能两者)都失败了

查看说明,您应该将返回对象的函数导出为
default
,如下所示:

export default () => {
  let store = createStore(persistedReducer)
  let persistor = persistStore(store)
  return { store, persistor }
}
当您重新加载页面(从URL栏)时,您正在重新加载JavaScript上下文。您的存储将被初始化,就像它是新的一样

当您在历史API中导航时,您将保留当前JavaScript执行上下文,并且存储将保留在内存中

我看到您试图将存储持久化到本地存储上,但是考虑到您的问题,存储的持久化或检索(可能两者)都失败了

查看说明,您应该将返回对象的函数导出为
default
,如下所示:

export default () => {
  let store = createStore(persistedReducer)
  let persistor = persistStore(store)
  return { store, persistor }
}
export default () => {
  let store = createStore(persistedReducer)
  let persistor = persistStore(store)
  return { store, persistor }
}