<list>中的<edit>数据时,在商店中未定义

时间:2017-05-30 13:51:51

标签: reactjs react-redux admin-on-rest

我有一个非常简单的用户列表,其中包含Admin On Rest(版本1.1.0)。

<Admin authClient={authClient} restClient={restClient}>
    <Resource name="users" list={UsersList} edit={UsersEdit} />
</Admin>

这会向https://example.com/api/users?_sort=id&_order=DESC&_start=0&_end=25执行GET请求,我会返回一个用户列表,其中只包含呈现列表所需的数据。

当我编辑其中一个用户时,会执行GET请求以获取该特定用户https://example.com/api/users/3ba7141c-03d2-4234-9031-76bf88ca7454的所有数据。

但是,由于某种原因,获取的数据存储在Redux商店内的未定义字段中:

{
  admin: {
    users: {
      data: {
        3ba7141c-03d2-4234-9031-76bf88ca7454: {
          // data returned from /users
        },
        undefined: {
          // data fetched from /users/3ba7141c-03d2-4234-9031-76bf88ca7454
        }
      }
    }
  }
}

由于这个错误,我无法正确呈现我的表单:

<Edit title="Edit" {...props}>
  <SimpleForm>
    {/*
       this one renders correctly as the Id is present in the `/users` request
    */}
    <DisabledInput label="Id" source="id" />
    {/*
       this one renders no content as it cannot find the new data from `/users/3ba...`
       (probably because of the undefined in the store)
    */}
    <TextInput label="email" source="account.email" validate={required} />
  </SimpleForm>
</Edit>

这是库中的一个错误,也许我错过了一些配置?

注意:这是我正在使用的其他客户端定义(文档中的代码)

const httpClient = (url, options = {}) => {
  if (!options.headers) {
    options.headers = new Headers({ Accept: 'application/json' });
  }
  const token = localStorage.getItem('token');
  options.headers.set('Authorization', `Bearer ${token}`);
  return fetchUtils.fetchJson(url, options);
}
const restClient = jsonServerRestClient('https://example.com/api', httpClient);

1 个答案:

答案 0 :(得分:2)

我认为获取的数据没有id字段。您可以通过选中redux store的这一部分来验证这一点:

undefined: {
   // data fetched from /users/3ba7141c-03d2-4234-9031-76bf88ca7454
}

您可以通过添加id字段来修复后端。