Reactjs 为什么反应开关箱不工作?
首先,我为这样一个基本的问题感到抱歉,但我刚刚开始学习React的官方文档 我想在单击“继续”按钮时更新topicTitle、topicContent和level的状态。它应该通过调用函数Reactjs 为什么反应开关箱不工作?,reactjs,Reactjs,首先,我为这样一个基本的问题感到抱歉,但我刚刚开始学习React的官方文档 我想在单击“继续”按钮时更新topicTitle、topicContent和level的状态。它应该通过调用函数NextTopic并在其中增加let level来实现。然后将this.state.level设置为递增变量level的值。之后,开关盒应检查this.state.level的值,如果它等于1,则更新topicName和topicContent的状态。 import React,{Component}来自
NextTopic
并在其中增加let level
来实现。然后将this.state.level
设置为递增变量level
的值。之后,开关盒应检查this.state.level
的值,如果它等于1,则更新topicName和topicContent的状态。
import React,{Component}来自'React';
导出默认类边栏扩展组件{
//默认状态
构造函数(){
超级();
此.state={
级别:0,
topicTitle:“主题名称”,
主题内容:“内容!!”
}
}
render(){
const NextTopic=(e)=>{
//增量水平
让水平;
级别++;
//将级别的状态设置为递增的let级别
this.setState({level:level});
//检查状态级别并更新主题名称和内容状态
开关(此.state.level){
案例1:
返回此.setState({topicTitle:'新主题名称',topicContent:'新内容!!'});
}
}
//边栏组件
返回(
{this.state.topicTitle}
{this.state.topicContent}
级别:{this.state.Level}
继续
)
}
};代码>setState不一定会在执行开关案例时更改状态中的级别
属性。对各种setState调用进行批处理,然后大约每16.67毫秒调用一次。你可以做两件事-
使用在NextTopic方法中创建的级别变量(另外,如何递增未定义的变量
让级别=this.state.level
水平仪++
this.setState({level:level})
开关(电平){
案例1://您的代码
}
在回调函数中将开关的大小写包装为setState,一旦react实际更改了状态,就会调用setState-
让级别=this.state.level
水平仪++
this.setState({level},()=>{
开关(此.state.level){
案例1://您的代码
})
您尚未在NextTopic
中将level
设置为0。您可以在setState
中直接将level
增加1:
this.setState((prevState, props) => ({
level: prevState.level + 1
}));
您缺少level=this.state.level
就在level++;
是的,这是我的错误,谢谢!=]@joelharkes另外,您可以阅读更多关于setState何时发生的理解。正如您在第1点中所说的,我甚至还没有定义那个变量,这是我的错误。谢谢您清除它!@kugtas谢谢,我将继续学习见鬼去吧=]