React-admin: как передать больше параметров в dataProvider для типа GET_LIST - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу передать один пользовательский параметр провайдеру данных администратора для типа '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
       }
    }
}

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Хорошо, я решил это с помощью фильтра UserList:

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

А в компоненте UserList (например):

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
       }
    }
}
0 голосов
/ 16 апреля 2019

Вы можете украсить свой провайдер данных .

По сути, вы перехватываете поставщика данных и добавляете свое собственное поведение в зависимости от типа и ресурса:

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

return requestHandler(type, resource, params);
...