在将状态添加到列表之前更新状态

时间:2019-09-27 12:55:52

标签: javascript reactjs

我有一个更新状态对象并将其添加到数组列表的函数。 问题是状态值可以从用户输入中更改,并将旧值添加到列表中,但是如果我第二次单击它,它有足够的时间来更新状态,则添加正确的值。

我认为状态更新需要先执行,然后再将其添加到列表中。该怎么办?解决此问题的最佳做法是什么?

我的功能

    const addObjectStateToList = () => {
        props.updateMeshState(); //Updating state
        setCart(currentState => [...currentState, props.meshObjectValues]); //Adding state to list
    }

功能用法

        return (
          <div>
            <button onClick={addObjectStateToList }>Add To Cart</button>
          </div>
    )

1 个答案:

答案 0 :(得分:1)

尝试根据meshObjectValues使用useEffect更新状态

const addObjectStateToList = () => props.updateMeshState();

useEffect(() => {
  setCart(currentState => [...currentState, props.meshObjectValues]);
}, [props.meshObjectValues]);