【发布时间】:2021-01-01 02:12:22
【问题描述】:
我正在尝试将放置在 Route 内的组件连接到 redux 存储,但没有任何成功。运行程序会抛出错误:TypeError: props.setIsLoggedIn is not a function
将 store 连接到 Route 之外的组件(例如 MenuBar)可以正常工作。
包含路由的文件的重要部分:
<ThemeProvider theme={Theme}>
<Provider store = {store}>
<Router>
<div className = {classes.pageLayout}>
<TopBar />
<MenuBar />
<Switch>
<Route exact path ="/"
component={<Home/>}/>
<Route exact path ="/home"
component={<Home/>}/>
<Route exact path ="/login"
component= {<LoginPage/>}/>
</Switch>
</div>
</Router>
</Provider>
</ThemeProvider>
LoginPage 文件的重要部分:
import { connect } from "react-redux";
const setIsLoggedIn = isLoggedIn => ({
type: "SET_IS_LOGGED_IN",
isLoggedIn: isLoggedIn
});
const LoginForm = (props) => {
props.setIsLoggedIn(true);
return (<div>Contains some components.</div>);
}
const mapDispatchToProps = {
setIsLoggedIn
};
export default connect(null, mapDispatchToProps)(LoginPage);
【问题讨论】:
-
在哪里将
setIsLoggedIn传递给LoginForm组件? -
setIsLoggedIn 是一个动作吗?
-
setIsLoggedIn 是一个动作创建者,现在我在 LoginPage 文件中,它在 LoginForm 组件之上
标签: reactjs react-redux react-router-dom redux-store