微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ListContextProvider 中使用 useListController 不提供数据

如何解决在 ListContextProvider 中使用 useListController 不提供数据

我正在使用 react-admin,但遇到了 useListController 没有在 ListContextProvider 内提供任何数据的问题,即使 useListContext 提供。

  const query = useQuery({
    type: 'getList',resource: 'dashboard/summary',payload: {
      pagination: { page,perPage },sort: { field: 'createdAt',order: 'DESC' },filter
    },});
  // more code ....
  return (
      <ListContextProvider
        value={{
          ...query,setPage,basePath,data: keyBy(query.data,'id'),ids: query.data.map(({ id }) => id),currentSort: { field: 'id',order: 'ASC' },selectedIds: [],resource,page,perPage,setFilters
        }}
      >
        <SummaryList onSearch={onSearch} filter={filter} />
      </ListContextProvider>
  );

内部SummaryList

  const context = useListContext();
  const cp = useListController(context);
  console.log(context);
  console.log(cp);

控制器对象

basePath: "/dashboard/summary"
currentSort: Object { field: "id",order: "ASC" }
data: Object {  }
defaultTitle: "Dashboard/summaries"
displayedFilters: Object {  }
error: null
exporter: function defaultExporter(data,_,__,resource)
filter: undefined
filterValues: Object {  }
hasCreate: undefined
hideFilter: function hideFilter(filterName)​
ids: Array []
loaded: true
loading: false
onSelect: function select(newIds)​
onToggleItem: function toggle(id)​
onUnselectItems: function clearSelection()
page: 1
perPage: 10
resource: "dashboard/summary"
selectedIds: Array []
setFilters: function setFilters(filter,displayedFilters,debounce)​
setPage: function setPage(newPage)​
setPerPage: function setPerPage(newPerPage)​
setSort: function setSort(sort,order)​
showFilter: function showFilter(filterName,defaultValue)
total: undefined

上下文对象

{
  "data": {
  // the data which I omitted
  },"total": 4,"loading": false,"loaded": true,"basePath": "/dashboard/summary","ids": [
    "2021-05-01","2021-05-02","2021-05-03","2021-05-04"
  ],"currentSort": {
    "field": "id","order": "ASC"
  },"selectedIds": [],"resource": "dashboard/summary","page": 1,"perPage": 10
}

我应该如何使用 useListController

解决方法

useListController 获取 List 道具(和位置参数),使用它从 dataProvider 获取数据,并将其传递给 ListContext。

通过调用 useListContext(),您可以访问由 useListController 构建的值和回调。

在您的示例中,您正在手动构建 ListContext,因此您根本不需要 useListController

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。