Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 TypeError:dispatch不是一个函数-在登录时持久化_Javascript_Reactjs_Typescript_Redux - Fatal编程技术网

Javascript TypeError:dispatch不是一个函数-在登录时持久化

Javascript TypeError:dispatch不是一个函数-在登录时持久化,javascript,reactjs,typescript,redux,Javascript,Reactjs,Typescript,Redux,我试图坚持用户登录后不要注销。因此,我将令牌放在localStorage中,并尝试运行在顶级组件“App”中的每次更新上设置登录状态令牌的相同操作 下面是App.js中的代码: import React, {FunctionComponent, useEffect} from 'react'; import {BrowserRouter as Router, Route, Switch} from 'react-router-dom'; import {AuthenticatedRoute} f

我试图坚持用户登录后不要注销。因此,我将令牌放在localStorage中,并尝试运行在顶级组件“App”中的每次更新上设置登录状态令牌的相同操作

下面是App.js中的代码:

import React, {FunctionComponent, useEffect} from 'react';
import {BrowserRouter as Router, Route, Switch} from 'react-router-dom';
import {AuthenticatedRoute} from './components/AuthenticatedRoute/AuthenticatedRoute';
import {Layout} from './components/Layout/Layout';
import {GlobalStyle} from './GlobalStyle';
import {Add} from './routes/add';
import {Home} from './routes/home';
import {Logout} from './routes/logout';
import {StateProvider} from './state/StateProvider';

import {useAppState} from './state/state.context';
import {ActionType} from './state/types/actions';

export const App: FunctionComponent = () => {
    const {dispatch} = useAppState();

    useEffect(() => {
        let currentUser = localStorage.getItem('token');
        let token;
        if (currentUser !== null) {
            token = JSON.parse(currentUser)
            dispatch({type: ActionType.LOGIN, jwtToken: token});
        }
    }, []);
    
    return (
        <Router>
            <GlobalStyle />
            <StateProvider>
                <Layout>
                    <Switch>
                        <Route exact={true} path="/" component={Home} />
                        <Route path="/login" component={Home} />
                        <AuthenticatedRoute path="/add" component={Add} />
                        <AuthenticatedRoute path="/logout" component={Logout} />
                    </Switch>
                </Layout>
            </StateProvider>
        </Router>
    );
};

分派不是一项功能
的意思就是这样。包括
useAppState
的代码,因为它似乎不会返回您认为它会返回的代码。此外,我建议您包括完整的错误。
分派不是一个函数
就是这个意思。包括
useAppState
的代码,因为它似乎不会返回您认为它会返回的代码。此外,我建议您包括完整的错误。
(anonymous function)
src/App.tsx:22
  19 |     let token;
  20 |     if (currentUser !== null) {
  21 |         token = JSON.parse(currentUser)
> 22 |         dispatch({type: ActionType.LOGIN, jwtToken: token});
     | ^  23 |     }
  24 | }, []);
  25 |