当前位置: 首页 > 知识库问答 >
问题:

if语句中使用setState()发出问题

能帅
2023-03-14

if语句中的setState():

// morePage = true
// pageNum = 1

if(morePage){
  this.setState({pageNum: this.state.pageNum+1})
}

console.log(this.state.pageNum); // return: 1

setState()out if语句:

// morePage = true
// pageNum = 1

if(morePage){
  // ... 
}
this.setState({pageNum: this.state.pageNum+1})

console.log(this.state.pageNum); // return: 2

我现在正面临这个问题,我想知道为什么...

谢谢:)

正确答案后编辑:

所以是的,我应该花更多的时间阅读React的Doc:p如果有人有兴趣知道我最后是怎么做的,下面是答案:

在文档中,他们说不能保证您的状态在重新呈现之前会有它的新值。所以您必须使用“componentdidupdate()”。

所以我做的是,我把:

this.setState({pageNum: this.state.pageNum+1})

在我创建的随机函数中,之后在“componentdidupdate(prevProps,prevState)”函数中,我可以访问新的和旧的props值,在那里,我可以使用“pagenum”的前一个和当前值:)

共有2个答案

司寇季
2023-03-14

所以基本上你的问题是别人引用的setstate。但您也可以轻松地console.log执行以下操作:

this.setState({pageNum: this.state.pageNum+1}, () => {
  console.log(this.state.pageNum);
})

请参阅setstate定义:

void setState(
  function|object nextState,
  [function callback]
)
许鸿志
2023-03-14

如前所述,不能保证state值将在下一行代码中更新。

如果要检查状态进行调试,请尝试将其记录在render方法中,因为该方法是在状态更新后调用的

 类似资料:
  • 我有一个脚本,当只有某些工作表打开时,我想在打开时运行它,但在绑定脚本的电子表格中没有其他工作表。所需的所有工作表的名称都为“代理报告-‘NameOfAgent’”。每个代理报告中还包含某些单元格,可用于IF条件语句。从逻辑上讲,我希望: 如果活动工作表的名称包含“代理报告”- 或者,如果处于活动工作表单元格A2==“角色”- 谢谢你的帮助。

  • 我似乎搞不清楚下面的语句与和有关的问题是什么。请记住,仍然在开发中,我只是还没有能够在语句中测试它,所以很可能是错误的。 我得到的错误是: 而语句是这样的。

  • 行动时刻 - 在unlang中使用if语句 if语句本身并不复杂。 它具有以下格式: if(condition){ ... } 由于其许多可能性,条件部分可能变得复杂。 使用if语句获取返回码 我们现在将查看模块的返回代码,并使用此代码与指定的条件进行比较。 FreeRADIUS中的每个模块都需要在调用时返回代码。 随后可以将此代码的值用作if语句中的条件检查。 使用if语句授权用户 如

  • 我对if else语句有些问题,请支持

  • 代码: 作业: 在直角三角形中,最长边长度的平方等于其他两条边长度的平方之和。编写一个程序,提示用户输入三角形三条边的长度,然后输出一条消息,指示三角形是否为直角三角形。无论输入三条边的长度顺序如何,该程序都可以正常工作。 我的问题:代码无法编译,找到:变量,必需:值 另外:我不知道如何制作,这样程序就可以知道三角形是否正确,即使边没有按顺序给出。请帮忙,我是一个初学者,在这项作业上有很多困难。

  • 问题内容: 在C语言中,我可以编写一个if语句 但是,当我尝试在Java中执行相同操作时,编译器会告诉我“不兼容的类型”,并说我需要一个而不是一个。有什么方法可以用Java编写C代码吗? 问题答案: 以下任何一项都可以为您工作: