【问题标题】:SetState inside map地图内的 SetState
【发布时间】:2024-01-21 00:40:01
【问题描述】:

我应该检查对象的值是否为空并设置状态,但问题是我的数据是对象并且我正在循环检查值是假还是真。我知道我无法在地图内设置状态,但找不到这样做的好方法。我正在使用钩子

【问题讨论】:

  • 你需要更新的有状态变量是什么?
  • const [send, setSend] = useState(true);我想将布尔值保存在 ex 中。发送变量,如果检查值为假,则将发送值设置为假,如果不是真的

标签: javascript reactjs react-hooks state


【解决方案1】:

要调整您的代码,只需在后面添加setSend(isAllowed)。但是使用.some会更合适:

setSend(
  Object.values(data).some(
    dataItem => dataItem.items.some(
      item => item.check === false
    )
  )
);

【讨论】:

  • 我认为Object.values(data) 将是一个带有键items 的对象数组,不是吗?
  • 是 Object.values(data) 正在返回我的项目数组
  • 它不起作用。未处理的拒绝(错误):重新渲染过多。 React 限制渲染次数以防止无限循环。
  • @Narine 你能发布完整的代码吗?您希望send 变量在组件挂载后何时更新,还是只想设置一次?
  • 我把它放在按钮点击现在它不会重新渲染但它不会正确改变状态,现在我有 3false 这意味着 3items.check 是真的,2 是真的但它总是保持真实。我想说的是,如果 item.check 之一为 false,则将 state 设置为 false