reactjs 按需加载WooCommerce数据,并通过Syncfusion在数据网格中显示

hmae6n7t  于 2023-01-25  发布在  React
关注(0)|答案(1)|浏览(125)

我需要用WooCommerce Rest API加载我的nodeJS应用程序中的所有产品。我使用WooCommerce REST API - JavaScript LibrarySyncfusion Grid Component。因为我不能一次加载所有数据,我想使用this这样的 * 按需加载数据 *,但我找不到任何文档或示例。
我有这样的东西:

import React from 'react';
import { useEffect, useState } from "react";
import { GridComponent, ColumnsDirective, ColumnDirective, Resize, Sort, ContextMenu, Filter, Page, ExcelExport, PdfExport, Edit, Inject } from '@syncfusion/ej2-react-grids';
import WooCommerceRestApi from "@woocommerce/woocommerce-rest-api";

var WooCommerce = new WooCommerceAPI({
  url: 'http://example.com',
  consumerKey: 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  consumerSecret: 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  wpAPI: true,
  version: 'wc/v1'
});

const WooCommerceProducts = () => {
  const [products, setProducts] = useState([]);

  useEffect(() => {
    fetchOrders();
  }, []);

  let fetchOrders = () => {
    WooCommerce
      .get("products", {
        per_page: 100,
        page: 1
      })
      .then((response) => {
        if (response.status === 200) {
          setProducts(response.data);
        }
      })
      .catch((error) => { });
  };

  return (
    <div className='m-2 md:m-10 p-2 md:p-10 bg-white rounded-3xl'>
      <Header category="Page" title="WooCommerce Orders" />
      <GridComponent
        id='gridcomp'
        dataSource={orders}
        allowPaging
        allowSorting>
        <ColumnsDirective>
          <ColumnDirective field='id' />
          <ColumnDirective field='name' />
          <ColumnDirective field='slug' />
          <ColumnDirective field='status' />

          ...

        </ColumnsDirective>
        <Inject services={[Resize, Sort, ContextMenu, Filter, Page, ExcelExport, PdfExport]} />
      </GridComponent>
    </div>
  )
}

export default WooCommerceProducts

请帮帮忙谢谢

btqmn9zl

btqmn9zl1#

如果您正在使用任何定制服务,我建议您使用定制绑定特性将数据绑定到网格,我将分享EJ2Grid中定制绑定的行为。
对于每个网格操作(如Filter、Page等),我都触发了dataStateChange事件,并且在事件参数中发送了相应的操作细节(如skip、take、filter field、value、sort direction等)。基于此,您可以在服务中执行操作,将数据作为resultcount对象返回。
注:在网格初始呈现时未触发"dataStateChange"事件。如果使用的是远程服务,则需要使用分页查询手动调用远程服务(需要将跳过值设置为0,并根据您在网格中的pageSettingspageSize取值。如果您没有在pageSettings中定义pageSize,需要在Grid的load事件中发送默认值12),请返回结果,如"{result:[...],计数:...}"格式转换为网格。
在Grid中执行CRUD操作时会触发"dataSourceChanged"事件。您可以使用此事件中的操作详细信息在服务中执行CRUD操作,并且需要调用endEdit方法以指示保存操作已完成。
定制装订:www.example.comhttps://ej2.syncfusion.com/react/documentation/grid/data-binding/data-binding/#custom-binding
演示:www.example.comhttps://ej2.syncfusion.com/react/demos/#/material/grid/custom-binding
样品:https://stackblitz.com/edit/react-v64sms-wx3hsy?file=index.js

相关问题