Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ReactJS更改状态onClick(无JSX)_Reactjs - Fatal编程技术网

ReactJS更改状态onClick(无JSX)

ReactJS更改状态onClick(无JSX),reactjs,Reactjs,我是ReactJS新手,尝试在用户单击导航栏时更新页面,但是页面不会更新。我得到一个错误: Warning: Can't call setState on a component that is not yet mounted. 当前导航栏看起来像: // Navbar Component class Navbar extends React.Component { constructor(){ super(); this.state = {page: 'home'};

我是ReactJS新手,尝试在用户单击导航栏时更新页面,但是页面不会更新。我得到一个错误:

Warning: Can't call setState on a component that is not yet mounted.
当前导航栏看起来像:

// Navbar Component
class Navbar extends React.Component {

  constructor(){
    super();
    this.state = {page: 'home'};
    this.onHomeClick = this.onHomeClick.bind(this);
    this.onAboutClick = this.onAboutClick.bind(this);
  }

  onHomeClick(){

    this.setState({page: 'home'});

  }

  onAboutClick(){

    this.setState({page: 'about'});

  }

  render() {
    const home = React.createElement('li', {className: 'navbar-item', id: 'homeButton', onClick: this.onHomeClick}, 'Home');
    const about = React.createElement('li', {className: 'navbar-item', id: 'about', onClick: this.onAboutClick}, 'About');

    const navbar = React.createElement('ul', {className: 'navbar'}, about, home);

    return navbar;
  }

}

最终申请的最终结果如下所示:

// App
class App extends React.Component{

  constructor(props){
    super(props);
  }

  render() {
    var navbar = new Navbar;
    var header = new Header;
    var slideshow = new Slideshow;
    var aboutMe = new AboutMe;

    if(navbar.state.page == 'home'){
      return React.createElement('div', {className: 'main-page'}, navbar.render(), header.render(), slideshow.render());
    } else if (navbar.state.page == 'about'){
      return React.createElement('div', {className: 'about-page'}, navbar.render(), header.render(), aboutMe.render());
    }
  }
}


// Render Application components
ReactDOM.render(
  React.createElement(App, null, null),
  document.getElementById('root')
);

关于优雅地处理onclick事件有什么想法吗?

好的,您得到的错误是因为您没有调用Navbar组件的构造函数

改变这个

var navbar = new Navbar;

同时更改其他组件构造函数


希望它有帮助

好的,您得到的错误是因为您没有调用Navbar组件的构造函数

改变这个

var navbar = new Navbar;

同时更改其他组件构造函数


希望能有所帮助

如果您是Reactjs新手,并且碰巧遵循了本教程中的任何一个内容,那么您遵循的可能是2015年的过时资料。如果您是Reactjs新手,并且碰巧遵循了本教程中的任何一个内容,那么您遵循的可能是2015年的过时资料。对于
new
操作符,如果
new
运算符的函数调用中没有参数,则可以使用括号;如果函数调用中没有参数,则可以使用括号