在react挂钩中使用prevState操作状态,

时间:2020-09-16 10:41:57

标签: reactjs react-hooks

我有一个对象,该对象在React挂钩中存储为数据状态。

const [data, setData] = useState();

数据如下所示: data

我想要实现的是,除了需要通过process_id过滤selected_process之外,我将返回相同的数据状态,例如:删除带有process_id 419的第一个对象。

编辑:

我试图做:

setData((prevData) => prevData.order.selected_process.filter(item => item.process_id !== process_id));

但是数据看起来像这样:

data

取而代之的是获取所有数据+过滤后的数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

您想更改数据并从列表中移出一项,只要您想在代码中,都可以这样做。.

function Comp(){
    const [data, setData] = useState();
    
    function setTheList(unwantedItemId){
        setData(prevData=>({...prevData,
                order : { ...prevData.order ,
                     selected_process : 
      prevData.order.selected_process.filter(item=>
                           item.id!==unwantedItemId
                          )
    }}))
    }
    //... your code 
    

    reutrn <OtherComp/>
}

这个答案是一个可行的解决方案,但看来您的州需要某种重构,以便能够以更简单的方式更改它...我建议将州分为多个州...