亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

過濾對象數組并設置為狀態數組變量

過濾對象數組并設置為狀態數組變量

森林海 2021-06-09 14:47:28
這是我將按 orderId 過濾然后設置為狀態變量的 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"}]這是我的狀態。  this.state = {      merchentOrders: [],      filterMerchentOrders: []    }//這是方法當我按 orderId 過濾時,它成功運行,然后我想將過濾后的輸出設置為“ this.setState({filterMerchentOrders: filterMerchentOrdersX});”。當我調出如下狀態時,未設置值。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貢獻1772條經驗 獲得超6個贊

這可能是setState異步運行的原因,當您console.log的值狀態可能未更新時。


要查看更新后的狀態,您可以傳遞一個回調函數。


this.setState({filterMerchentOrders: filterMerchentOrdersX},()=>{

   console.log("this.state.filterMerchentOrders ==" ,this.state.filterMerchentOrders);

})


查看完整回答
反對 回復 2021-06-18
?
達令說

TA貢獻1821條經驗 獲得超6個贊

由于您使用的是 ES6 語法,因此您的函數可以更短更簡潔。但在我看來你沒有做錯任何事


getOrderDetails = id => {

    const filterMerchentOrders = this.state.merchentOrders.filter(

     value => value.orderId.toString().indexOf(id) !== -1

    );

    this.setState({filterMerchentOrders});

}


查看完整回答
反對 回復 2021-06-18
  • 3 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號