Javascript TypeError:dispatch不是一个函数-在登录时持久化
我试图坚持用户登录后不要注销。因此,我将令牌放在localStorage中,并尝试运行在顶级组件“App”中的每次更新上设置登录状态令牌的相同操作 下面是App.js中的代码: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
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 |