React-admin:如何将更多参数传递给类型为GET_LIST的dataProvider

问题描述 投票:0回答:2

我想将一个自定义参数传递给Admin的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
2个回答
0
投票

你可以decorate your Data Provider

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

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

return requestHandler(type, resource, params);

0
投票

好的,我使用用户列表过滤器解决了这个问题:

<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
       }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.