ReactJS更改状态onClick(无JSX)
我是ReactJS新手,尝试在用户单击导航栏时更新页面,但是页面不会更新。我得到一个错误: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'};
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
运算符的函数调用中没有参数,则可以使用括号;如果函数调用中没有参数,则可以使用括号