森林海
2021-06-09 14:47:28
這是我將按 orderId 過濾然后設(shè)置為狀態(tài)變量的 JSON 輸入。[{"orderId":3,"userId":3,"firstName":"Amal","lastName":"kankanige","contactNo":"011-3456787","status":"pending","deliveryAddress":"No:24/c,Anders Road,Wijerama,Wijerama,Srilanka","productName":"Apple","quantity":2,"total":100.0,"id":null,"order_date":"2019-01-31 10:28:29"}]這是我的狀態(tài)。 this.state = { merchentOrders: [], filterMerchentOrders: [] }//這是方法當(dāng)我按 orderId 過濾時,它成功運(yùn)行,然后我想將過濾后的輸出設(shè)置為“ this.setState({filterMerchentOrders: filterMerchentOrdersX});”。當(dāng)我調(diào)出如下狀態(tài)時,未設(shè)置值。getOrderDetails = id => { console.log("id ==" ,id); let filterMerchentOrdersX = this.state.merchentOrders.filter(value => { return ( value.orderId.toString() .indexOf(id) !== -1 ); }); this.setState({filterMerchentOrders: filterMerchentOrdersX}); //this is working console.log("filterMerchentOrdersX ==" ,filterMerchentOrdersX); //this gives an empty array console.log("this.state.filterMerchentOrders ==" ,this.state.filterMerchentOrders); };
3 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個贊
這可能是setState異步運(yùn)行的原因,當(dāng)您console.log的值狀態(tài)可能未更新時。
要查看更新后的狀態(tài),您可以傳遞一個回調(diào)函數(shù)。
this.setState({filterMerchentOrders: filterMerchentOrdersX},()=>{
console.log("this.state.filterMerchentOrders ==" ,this.state.filterMerchentOrders);
})

達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個贊
由于您使用的是 ES6 語法,因此您的函數(shù)可以更短更簡潔。但在我看來你沒有做錯任何事
getOrderDetails = id => {
const filterMerchentOrders = this.state.merchentOrders.filter(
value => value.orderId.toString().indexOf(id) !== -1
);
this.setState({filterMerchentOrders});
}
添加回答
舉報
0/150
提交
取消