javascript - 过滤对象数组并设置状态数组变量

标签 javascript reactjs

这是我要按 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);
  };

最佳答案

这可能是 setState 异步运行的原因,当您 console.log 时,值状态可能不会更新。

要查看更新后的状态,可以传递一个回调函数。

this.setState({filterMerchentOrders: filterMerchentOrdersX},()=>{
   console.log("this.state.filterMerchentOrders ==" ,this.state.filterMerchentOrders);
})

关于javascript - 过滤对象数组并设置状态数组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56424410/

相关文章:

javascript - Reactjs setState 不改变状态

javascript - Express 提供的客户端 React 应用程序上一致的 url 路由

ios - react-navigation-fluid-transitions 共享图像闪烁

javascript - React.js 并更新 JSON 数组状态

javascript - 我怎样才能只更新部分状态

javascript - Chromium 错误 :- 6 Charts. js/Chartnew.js

javascript - 为什么这个继承示例在我的电脑上不起作用?

javascript - 文件从 s3 存储桶写入本地后返回状态

javascript - 在 jquery 中显示带有基本鼠标悬停事件的菜单

javascript - 如何读取xml中另一个标签下标签的属性