Reactjs 为什么要做出反应;注销不是一项功能;

Reactjs 为什么要做出反应;注销不是一项功能;,reactjs,Reactjs,由于某些原因,请参阅下面的代码,该代码将“注销不是一个函数”: logout.jsx: import React from 'react'; import { Link } from 'react-router-dom'; class Logout extends React.Component { componentDidMount = () => { this.props.onLogoutUser(); } render() { retur

由于某些原因,请参阅下面的代码,该代码将“注销不是一个函数”:

logout.jsx:

import React from 'react';
import { Link } from 'react-router-dom';


class Logout extends React.Component {

  componentDidMount = () => {
    this.props.onLogoutUser();
  }

  render() {
    
    return (
      <p>You're now logged out. Click <Link to='/login'>here</Link> to log back in.</p>
    )
  }

};

export default Logout;
我真的很困惑,为什么我会犯我不该犯的错误。有什么反馈吗
非常感谢。

您不能直接访问组件安装挂钩内的道具。但是,您可以在渲染挂钩上访问它。要在componentDidMount钩子上使用它,可以将super与构造函数一起使用:

class Logout extends React.Component {
  constructor(props) {
    super(props)
现在,您可以像以前一样访问ComponentDidMountHook中的道具

另外,您正在使用arrow方法(公共类方法)来使用componentDidMount钩子,因此需要传递props参数并使用
props
而不是
this.props
。或者简单地使用:

componentDidMount() {
  // this.props

您不能直接访问componentDidMount挂钩内的道具。但是,您可以在渲染挂钩上访问它。要在componentDidMount钩子上使用它,可以将super与构造函数一起使用:

class Logout extends React.Component {
  constructor(props) {
    super(props)
现在,您可以像以前一样访问ComponentDidMountHook中的道具

另外,您正在使用arrow方法(公共类方法)来使用componentDidMount钩子,因此需要传递props参数并使用
props
而不是
this.props
。或者简单地使用:

componentDidMount() {
  // this.props

错误发生在哪里?你能发布堆栈跟踪吗?你忘了导入它。@Quentin我道歉。它实际上包含了我只是忘记在帖子中包含导入。@Dominic我添加了问题的回溯片段。请在应用程序组件中尝试
onLogoutUser={this.logoutUser}
而不是
onLogoutUser={logoutUser}
发生错误的地方?你能发布堆栈跟踪吗?你忘了导入它。@Quentin我道歉。实际上已经包含了,我只是忘了在帖子中包含导入内容。@Dominic我添加了问题的回溯片段。请在应用程序组件中尝试
onLogoutUser={this.logoutUser}
而不是
onLogoutUser={logoutUser}