setState ReactJS Material UI 不工作
setState ReactJS Material UI is not working
我有下一个问题。我希望当我单击一个 MenuItem 时,我的组件的状态会随着单击的 MenuItem 的名称而改变。我这样做:
export default class MenuAlumno extends React.Component {
constructor() {
super();
this.state = {
drawerOpen:false,
currentPage: 'Inicio'
}
};
currentPages = (currentPage) => {
this.setState({
currentPage: currentPage
});
//this.state.currentPage = currentPage;
}
render() {
return (
<div>
<Drawer
docked = {false}
width = {200}
open = {this.state.drawerOpen}
onRequestChange = {(drawerOpen) => this.setState({drawerOpen})}
>
<MenuItem primaryText = "Inicio" onTouchTap = {this.currentPages('Inicio')} containerElement = {<Link to="/administrador/inicio"/>}/>
<MenuItem primaryText = "Nueva Incidencia" onTouchTap = {this.currentPages('Nueva Incidencia')} containerElement = {<Link to="/administrador/nueva_incidencia"/>}/>
<MenuItem primaryText = "Incidencias Recibidas" onTouchTap = {this.currentPages('Incidencias Recibidas')} containerElement = {<Link to="/administrador/incidencias_recibidas"/>}/>
<MenuItem primaryText = "Informes" onTouchTap = {this.currentPages('Informes')} containerElement = {<Link to="/administrador/informes"/>}/>
</Drawer>
</div>
);
}
但是我有下一个错误:
Warning: setState(...): Cannot update during an existing state transition (such as within 'render' or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to 'componentWillMount'.
会是什么?谢谢大家
编辑:----
如果我这样做:(添加 ()=> 开始调用函数)
<MenuItem primaryText = "Inicio" onTouchTap = {() => this.currentPages('Inicio')} containerElement = {<Link to="/administrador/inicio"/>}/>
<MenuItem primaryText = "Nueva Incidencia" onTouchTap = {() => this.currentPages('Nueva Incidencia')} containerElement = {<Link to="/administrador/nueva_incidencia"/>}/>
<MenuItem primaryText = "Incidencias Recibidas" onTouchTap = {() => this.currentPages('Incidencias Recibidas')} containerElement = {<Link to="/administrador/incidencias_recibidas"/>}/>
<MenuItem primaryText = "Informes" onTouchTap = {() => this.currentPages('Informes')} containerElement = {<Link to="/administrador/informes"/>}/>
我没有任何错误,但无法正常工作。当我单击状态时,状态未更新,继续 'Inicio',当我再次单击相同的选择时,状态发生变化(但仅当我在同一选项上单击两次时)。我认为这可能是由于 Link 到其他重新呈现菜单组件的路由。有什么解决办法吗?
谢谢。
当我使用我想设置为当前页面的名称调用我的组件 MenuAlumno 时,我解决了添加道具的问题。有用。如果有人有其他解决方案,我会很乐意尝试。再见
我有下一个问题。我希望当我单击一个 MenuItem 时,我的组件的状态会随着单击的 MenuItem 的名称而改变。我这样做:
export default class MenuAlumno extends React.Component {
constructor() {
super();
this.state = {
drawerOpen:false,
currentPage: 'Inicio'
}
};
currentPages = (currentPage) => {
this.setState({
currentPage: currentPage
});
//this.state.currentPage = currentPage;
}
render() {
return (
<div>
<Drawer
docked = {false}
width = {200}
open = {this.state.drawerOpen}
onRequestChange = {(drawerOpen) => this.setState({drawerOpen})}
>
<MenuItem primaryText = "Inicio" onTouchTap = {this.currentPages('Inicio')} containerElement = {<Link to="/administrador/inicio"/>}/>
<MenuItem primaryText = "Nueva Incidencia" onTouchTap = {this.currentPages('Nueva Incidencia')} containerElement = {<Link to="/administrador/nueva_incidencia"/>}/>
<MenuItem primaryText = "Incidencias Recibidas" onTouchTap = {this.currentPages('Incidencias Recibidas')} containerElement = {<Link to="/administrador/incidencias_recibidas"/>}/>
<MenuItem primaryText = "Informes" onTouchTap = {this.currentPages('Informes')} containerElement = {<Link to="/administrador/informes"/>}/>
</Drawer>
</div>
);
}
但是我有下一个错误:
Warning: setState(...): Cannot update during an existing state transition (such as within 'render' or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to 'componentWillMount'.
会是什么?谢谢大家
编辑:----
如果我这样做:(添加 ()=> 开始调用函数)
<MenuItem primaryText = "Inicio" onTouchTap = {() => this.currentPages('Inicio')} containerElement = {<Link to="/administrador/inicio"/>}/>
<MenuItem primaryText = "Nueva Incidencia" onTouchTap = {() => this.currentPages('Nueva Incidencia')} containerElement = {<Link to="/administrador/nueva_incidencia"/>}/>
<MenuItem primaryText = "Incidencias Recibidas" onTouchTap = {() => this.currentPages('Incidencias Recibidas')} containerElement = {<Link to="/administrador/incidencias_recibidas"/>}/>
<MenuItem primaryText = "Informes" onTouchTap = {() => this.currentPages('Informes')} containerElement = {<Link to="/administrador/informes"/>}/>
我没有任何错误,但无法正常工作。当我单击状态时,状态未更新,继续 'Inicio',当我再次单击相同的选择时,状态发生变化(但仅当我在同一选项上单击两次时)。我认为这可能是由于 Link 到其他重新呈现菜单组件的路由。有什么解决办法吗?
谢谢。
当我使用我想设置为当前页面的名称调用我的组件 MenuAlumno 时,我解决了添加道具的问题。有用。如果有人有其他解决方案,我会很乐意尝试。再见