Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 为什么反应开关箱不工作?_Reactjs - Fatal编程技术网

Reactjs 为什么反应开关箱不工作?

Reactjs 为什么反应开关箱不工作?,reactjs,Reactjs,首先,我为这样一个基本的问题感到抱歉,但我刚刚开始学习React的官方文档 我想在单击“继续”按钮时更新topicTitle、topicContent和level的状态。它应该通过调用函数NextTopic并在其中增加let level来实现。然后将this.state.level设置为递增变量level的值。之后,开关盒应检查this.state.level的值,如果它等于1,则更新topicName和topicContent的状态。 import React,{Component}来自

首先,我为这样一个基本的问题感到抱歉,但我刚刚开始学习React的官方文档

我想在单击“继续”按钮时更新topicTitle、topicContent和level的状态。它应该通过调用函数
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谢谢,我将继续学习见鬼去吧=]