bpd*_*pdg 6 javascript reactjs react-redux
我无法弄清楚“useSelector”发生了什么,我几乎不需要帮助。
错误
React Hook "useSelector" 在函数 "render_user" 中调用,该函数既不是 React 函数组件也不是自定义 React Hook 函数
class Navigationbar extends Component {
onLogoutClick = e => {
e.preventDefault();
this.props.logoutUser(); //this.props.
};
render() {
const render_user = () => {
const auth = useSelector(state => state.auth); Error Message is here
//More Code Here
);
};
}
Run Code Online (Sandbox Code Playgroud)
Navigationbar.propTypes = {
logoutUser: PropTypes.func.isRequired,
auth: PropTypes.object.isRequired
};
const mapStateToProps = state => ({
auth: state.auth
});
export default connect(
mapStateToProps,
{ logoutUser }
)(Navigationbar);
Run Code Online (Sandbox Code Playgroud)
错误是由于您违反了hooks 规则:
- 只在顶层调用钩子
- 仅从 React 函数调用钩子
违规行为:
useSelector()
不在顶层调用。这就是所谓render_user()
的render()
(即嵌套函数)。useSelector()
是类组件的一部分, Navigationbar
您可以提取组件以遵循钩子规则并使用useSelector
:
function User() { // Rule 2: call hooks in function component
const auth = useSelector(state => state.auth); // Rule 1: call hooks in top-level
return <>{auth}</>
}
class Navigationbar extends Component {
render_user() {
if (props.authenticated) {
return <User />
}
// not yet authenticated
// do something else
}
render() {
return <>{this.render_user()}</>
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17951 次 |
最近记录: |