【问题标题】:React-admin: How to Pass more parameters to a dataProvider for type GET_LISTReact-admin:如何将更多参数传递给 GET_LIST 类型的 dataProvider
【发布时间】:2019-09-06 20:22:41
【问题描述】:

我想将一个自定义参数传递给管理员的 dataProvider 类型“GET_LIST”。

我在 App.js 中有这样的东西:

<Admin dataProvider={dataProvider}> 
    <Resource name="posts" list={PostList} myCustomAttr={"10"} /> 
    <Resource name="users" list={UserList} myCustomAttr={"15"} /> 
</Admin>

“dataProvider”是一个自定义 dataProvider,我希望在调用它时拥有“myCustomAttr”。

所以我的自定义 dataProvider 可能如下所示:

export default (type, resource, params) => {

    if (type == 'GET_LIST') {
       if (params.myCustomAttr == '10') {
           //Do something
       }
    }
}

【问题讨论】:

    标签: reactjs parameters react-admin dataprovider


    【解决方案1】:

    好的,我已经通过使用 List filter 道具解决了这个问题:

    <Admin dataProvider={dataProvider}> 
        <Resource name="posts" list={PostList} options={{ myCustomAttr: "10" }} /> 
        <Resource name="users" list={UserList} options={{ myCustomAttr: "15" }} /> 
    </Admin>
    

    并且在UserList(like)组件中:

    export const UserList = function(props) {
        return <List {...props} filter={{myCustomAttr:props.options.myCustomAttr}} >
            //...
        </List>
    };
    

    这样,我在 dataProvider 中得到了我想要的。

    export default (type, resource, params) => {
    
        if (type == 'GET_LIST') {
           if (params.filter.myCustomAttr == '10') {
               //Do something
           }
        }
    }
    

    【讨论】:

      【解决方案2】:

      你可以decorate your Data Provider

      基本上,您拦截数据提供者并根据类型和资源添加自己的行为:

      if (type === 'GET_LIST') {
          params = {...params, myCustomParameter: 10};
      }
      
      return requestHandler(type, resource, params);
      

      【讨论】:

      • 感谢您的回答。问题是除了资源之外我还需要一个额外的参数。对于像文档中的装饰器这样的装饰器,用于类型“UPDATE”,并且您拥有“params”参数中的字段数据以查看要做什么。但是在“GET_LIST”的情况下,参数中没有任何可识别的属性,只有排序和分页。我需要在获取数据时访问设置为资源的数字道具,如果我为此使用“资源”参数,管理员的标题将显示一个数字而不是“用户”之类的名称。
      • 我编辑了我的答案。那不是你需要的吗?您将自定义参数添加到 params,然后继续调用原始 dataProvider。
      • 当然。但我会在哪里做呢?问题是“10”值(在您的示例中)属于 Resource 组件,一旦调用了 dataProvider,我需要能够以某种方式传递它。
      • 我只需要一种方法将参数从 Resource 组件传递到 GET_LIST 上的 dataProvider 以指示服务器如何将 json 返回到列表。
      • 我不清楚“该值属于资源组件”是什么意思。它以什么方式属于资源,这个价值从何而来?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多