Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript redux persist不';不起作用,补液只发生一次_Javascript_Reactjs_Redux_Frontend - Fatal编程技术网

Javascript redux persist不';不起作用,补液只发生一次

Javascript redux persist不';不起作用,补液只发生一次,javascript,reactjs,redux,frontend,Javascript,Reactjs,Redux,Frontend,我目前正在使用react 15.4.2和redux,每当浏览器刷新时,我将保持我的react/redux状态。我发现人们建议继续使用redux,但当我按照基本用法的说明进行操作时,它根本不起作用,当我刷新浏览器时,所有状态再次变为空。这是记录器显示的内容 重新水化只显示一次(第一次),并且在执行另一个操作时不会再次出现。这是我的store.js import {createStore, applyMiddleware} from "redux"; import thunk from "redu

我目前正在使用react 15.4.2和redux,每当浏览器刷新时,我将保持我的react/redux状态。我发现人们建议继续使用redux,但当我按照基本用法的说明进行操作时,它根本不起作用,当我刷新浏览器时,所有状态再次变为空。这是记录器显示的内容

重新水化只显示一次(第一次),并且在执行另一个操作时不会再次出现。这是我的store.js

import {createStore, applyMiddleware} from "redux";
import thunk from "redux-thunk";
import logger from "redux-logger";
import promise from "redux-promise-middleware";
import {composeWithDevTools} from "redux-devtools-extension";
import {autoRehydrate, persistStore} from 'redux-persist';

import combineReducer from "./reducers/combineReducer";

const middleware = composeWithDevTools(applyMiddleware(promise(), thunk, logger()), autoRehydrate());

const store = createStore(combineReducer, middleware);
persistStore(store);

export default store;
这是我的index.js:

import React from "react";
import ReacrDOM from "react-dom";
import {Router, Route, IndexRoute, hashHistory, browserHistory} from "react-router"
import {Provider} from "react-redux";
import {login_check} from "./actions/logActions";

import store from "./store";
import Layout from "./pages/Layout";
import Dashboard from "./pages/Dashboard";
import Login from "./pages/login/index";
import User from "./pages/user/index";
import Pemain from "./pages/pemain/index";

const app = document.getElementById("app");

function requireLogin() {
    const {user_id, session_key}=store.getState().logReducer;
    store.dispatch(login_check({user_id: user_id, session_key: session_key}))
    const {logged_in}=store.getState().logReducer;
    if (!logged_in) {
        /*browserHistory.push('#/login');*/
        hashHistory.push('/login');
    }
}

ReacrDOM.render(
    <Provider store={store}>
        <Router history={hashHistory}>
            <Route path="/login" component={Login}/>
            <Route path="/" component={Layout} onEnter={requireLogin}>
                <IndexRoute component={Dashboard} onEnter={requireLogin}/>
                <Route path="user" component={User} onEnter={requireLogin}/>
                <Route path="pemain" component={Pemain} onEnter={requireLogin}/>
            </Route>
        </Router>
    </Provider>
    , app);
我用谷歌搜索了两天,但仍然没有找到任何解决方案,如何让它工作?请帮助我

问候,


vidy hermes

我认为您需要将自动脱水传递到createStore,而不是使用开发工具进行合成

import { autoRehydrate } from 'redux-persist';
import { createStore } from 'redux';
import thunk from 'redux-thunk';
import logger from 'redux-logger'

const middleware = composeWithDevTools(applyMiddleware(promise(), thunk, logger()));

const store = createStore(combineReducer, middleware, autoRehydrate());

我只是react/redux方面的新手。虽然我没有导入promise和thunk,但我只是使用了正常语法,我猜您使用的是“()”after logger,它使其成为函数调用,并且不会在存储中保存状态和自动流出物

using composeWithDevTools:

const middleware = composeWithDevTools(applyMiddleware(logger));

 let store = createStore(rootReducer   , middleware , autoRehydrate());
 persistStore(store ) ;

using simple boilerplate :

let store = createStore(rootReducer   , applyMiddleware(logger) , autoRehydrate());
 persistStore(store ) ;

我希望它能有所帮助。

还没有找到任何解决方案,但我尝试寻找另一个解决主要问题的解决方案,即redux状态持久性,因此我目前使用redux localstorage,它很容易设置,而且工作正常。仍然不起作用,每次刷新页面时都会重置状态。。但是谢谢你
using composeWithDevTools:

const middleware = composeWithDevTools(applyMiddleware(logger));

 let store = createStore(rootReducer   , middleware , autoRehydrate());
 persistStore(store ) ;

using simple boilerplate :

let store = createStore(rootReducer   , applyMiddleware(logger) , autoRehydrate());
 persistStore(store ) ;