React-redux:嵌套数组正在重复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React-redux:嵌套数组正在重复相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个订单表(数组),每个订单中都有一个嵌套的“products”数组。

订单表按预期呈现,但每个订单的产品相同。

OrderTable组件(为简洁起见而简化)

class OrderTable extends Component {
    componentWillMount() {
        this.props.fetchPtOrders(this.props.patient_id);
      }

    renderOrders(orders) {
        return orders.map((order) => {
          return (
            <tr key={order.id}>
              <td>
                <ProductTable id={order.id}/>
              </td>
            </tr>
          );
        });
    }

    render() {
        const { orders, loading, error } = this.props.orderTable;

        return (
          <div class="container divcon">
            <h1>Orders</h1>
            <table class="pto">
              <tbody>
                {this.renderOrders(orders)}
              </tbody>
            </table>
          </div>
        );
    }
}

export default OrderTable;

<ProductTable id={orders.id}/>对产品进行排列,基本上是上面的副本(减去ProductTable组件)。

我尝试使用ID(3000022和3000023)进行调试,发现一切都在batches中完成。

3000022包含的产品/ 3000023是空的。

请求的响应用于两个ID,并在每次迭代时被覆盖。每个订单只使用最后一个响应。

ProductTable容器:

function mapStateToProps(state, ownProps) {
  return {
    ProductTable: state.order_products.ProductTable,
    order_id: ownProps.id
  };
}

const mapDispatchToProps = (dispatch) => {
  return {
    fetchPtOrderProducts: (id) => {
      dispatch(fetchPtOrderProducts(id)).then((response) => {
        !response.error ? dispatch(fetchOrderProductsSuccess(response.payload.data)) : dispatch(fetchOrderProductsFailure(response.payload.data));
      });
    }
  }
}

export default connect(mapStateToProps, mapDispatchToProps)(ProductTable);

产品获取操作:

export function fetchPtOrderProducts(id) {
  const request = axios({
    method: 'get',
    url: `${ROOT_URL}/order_product/search.php?s=${id}`,
    headers: []
  });

  return {
    type: FETCH_PTORDER_PRODUCTS,
    payload: request
  };
}

产品成功动作:

export function fetchOrderProductsSuccess(order_products) {
  console.log("products fetched")
  return {
    type: FETCH_ORDER_PRODUCTS_SUCCESS,
    payload: order_products
  };
}

产品减速器

case FETCH_ORDER_PRODUCTS:// start fetching products and set loading = true
    return { ...state, ProductTable: {order_products:[], error: null, loading: true} };

case FETCH_ORDER_PRODUCTS_SUCCESS:// return list of products and make loading = false
    return { ...state, ProductTable: {order_products: action.payload, error:null, loading: false} };

我怎样才能制作orders.map()<ProductTable />阵列one ID at a time

谢谢你的帮助!对不起,如果有什么不清楚...我是一个完整的新手。

以上是关于React-redux:嵌套数组正在重复的主要内容,如果未能解决你的问题,请参考以下文章

Android 动画嵌套片段

将平面对象数组转换为嵌套对象数组[重复]

在 BigQuery 中查询双嵌套数组 [重复]

BigQuery 取消嵌套数组 - 获取重复项

嵌套循环与数组c#[重复]

嵌套for循环中的python数组[重复]