在反应中更新三元运算符内的状态

Posted

技术标签:

【中文标题】在反应中更新三元运算符内的状态【英文标题】:Updating state inside a ternary operator in react 【发布时间】:2020-12-07 04:50:45 【问题描述】:

我正在使用moviedb api 来制作应用程序,但在更新三元运算符中的状态时遇到了一些问题。如果我运行以下代码来检查一切是否正常,则没有问题

(match.params.id === iteminfo[0]) ? console.log("match") : console.log("nomatch")

如果 id 和 iteminfo 匹配,我得到匹配,如果它们不匹配,我得到“nomatch”

当我尝试像这样更新状态时

(match.params.id === iteminfo[0]) ? setRemove(true) : console.log("nomatch")

我收到以下错误

有没有办法更新状态使其不形成这个循环?

【问题讨论】:

这能回答你的问题吗? Uncaught Invariant Violation: Too many re-renders. React limits the number of renders to prevent an infinite loop 【参考方案1】:

问题是你必须把这个三元组放在渲染函数中,这会产生一个反馈循环。将其包裹在 useEffect 回调中即可。

【讨论】:

以上是关于在反应中更新三元运算符内的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在三元运算符上导航反应页面?

箭头函数内的三元运算符

javascript React - 三元运算符或jsx中的条件包含带反应的html

三元运算符不改变状态

三元运算符无法正常工作

在 className if-else 语法中反应 JSX [重复]