Ответ useGetOne не переопределяет компонент - PullRequest
0 голосов
/ 31 марта 2020

Я чувствую себя довольно разочарованным в этом простом примере, потому что либо я чего-то не получаю, либо он работает не так, как я ожидаю, и так, как он говорит в документации.

Поэтому я пытаюсь расширить компонент CloneButton для фактического получения записи в каждой строке таблицы данных и передачи ее компоненту создания:

import React from 'react';
import PropTypes from 'prop-types';
import { CloneButton, useGetOne } from 'react-admin';
import CircularProgress from '@material-ui/core/CircularProgress';

const CloneQueryButton = ({
    label = "Duplicate",
    basePath,
    record,
    ...props
}) => {

const { data, loading, error } = useGetOne(basePath, record.id);

if (loading) { return <CircularProgress />; }
if (error) { return <p>ERROR {error.message}</p>; }

if (data) {
    console.log("inside", data);
    data.name = `Copy of ${data.name}`;
}

console.log("outside", data);

return <CloneButton
    basePath={basePath}
    record={data}
    label={label}
    {...props} />
};

То, что я получаю на консоли, это просто outside null Также, когда кнопка нажата он перенаправляет на страницу создания с пустым свойством record.

Я вижу сетевой запрос, и все они возвращают действительные jsons. Я не понимаю, почему компонент явно не воспроизводится при получении ответа. Если кто-то увидит, чего мне не хватает, буду очень признателен!

1 Ответ

0 голосов
/ 31 марта 2020

Консоль успешна, это означает, что нет ни error, ни loading.

После проверки реализации useGetOne, если она в принципе не работает найти ресурс в вашем admin state с заданным именем, он вернет ноль.

Так что я предполагаю, что у вас нет ресурса, объявленного в admin's state (он же <Resource name="your name" /> в <Admin> дерево.

onst useGetOne = (
    resource: string,
    id: Identifier,
    options?: any
): UseGetOneHookValue =>
    useQueryWithStore(
        { type: 'getOne', resource, payload: { id } },
        options,
        (state: ReduxState) =>
            state.admin.resources[resource]
                ? state.admin.resources[resource].data[id]
                : null
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...