首页 > 解决方案 > 无法在异步函数结束时更新状态

问题描述

我有一个异步函数,可以更新context. 更新完成后,我的本地状态应该将组件从“编辑”模式更改为“查看”模式。我的问题是所有数组更新都有效,但是在添加代码行以将视图从编辑设置回视图时出现错误,我得到Error: Objects are not valid as a React child.

我尝试创建一个外部异步函数来更改将在其余await函数结束时触发的视图状态,但这样做时我收到相同的错误。

以下是相关代码:

const [editMode, setEditMode] = useState(false);

async function updateItem(node) {
      //Update main node listing
      let newNodeList = [...nodeData];
      newNodeList[node.itemindex].itemname = node.itemname;
      newNodeList[node.itemindex].itemid = node.itemid;
      newNodeList[node.itemindex].process = node.process;
      if (newNodeList[node.itemindex].process === undefined) {
        newNodeList[node.itemindex].process = {};
        newNodeList[node.itemindex].process.label = "";
      } else {
        newNodeList[node.itemindex].process.label = node.process;
      }

      await setNodeData(newNodeList);

      //Update active node
      await props.setActiveNode(newNodeList[node.itemindex]);
      setEditMode(false);
    }

如果我在最后注释掉setEditMode,那么其他一切正常,但组件不会返回查看模式。

标签: reactjs

解决方案


推荐阅读