假设您已经在src/components/App.js 组件中定义了路由。您现在需要确保您的 App 组件知道用户是否真正登录。
我们还假设您已经在reducers/auth.js 中开发了一个reducer 来记录用户是否登录,并且您已将authReducer 分配给您的auth 状态。
此时,您需要在 src/components/App.js 文件中导入:
import { connect } from 'react-redux';
然后在App 组件的底部,您需要像这样定义mapStateToProps:
function mapStateToProps(state) {
return { auth: state.auth }
}
export default App;
所以我上面的建议是将state 传递给mapStateToProps,然后传递return 一个具有auth 键的对象,这将采用来自authReducer 的任何值。
然后你把你导入的connect() 函数传递给它,像这样传递mapStateToProps:
export default connect(mapStateToProps)(App);
所以现在您的App 组件知道用户是否已登录。
那么实施上述方法有什么好处呢?好吧,它使您可以灵活地根据用户是否登录来确定在视图中显示什么。例如,登录/退出按钮。
您现在可以使用具有如下条件的辅助方法开发该按钮:
renderButton() {
if (this.props.auth) {
return (
<button>
Sign Out
</button>
);
} else {
return (
<button>
Sign In
</button>
);
}
}