когда пользователь изменяет данные, mutate вызывает ошибку таблицы реакции: не является функцией
Я программирую приложение next.js, используя таблицу реакций и используюSWR для извлечения данных из маршрута api / clients.
const fetchData = (args) => fetch(args).then((res) => res.json())
const { data, fetchError, mutate } = useSWR(session ? ['/api/clients/', session] : null, fetchData)
После успешного создания таблицы пользователь может нажать кнопку «активный / неактивный», чтобы обновить базу данных маршрутом api / active. Прямо сейчас все работает нормально, пока здесь.
const changeActive = (props, isVisible) => async (event) => {
try {
const urlparam = props
const response = fetch(`/api/active/${urlparam}`)
mutate({ ...data, active: isVisible })
} catch(err) {
// something
}
};
Проблема в том, что таблица не перерисовывается, поэтому пользователь не может увидеть изменения, если он не изменит вкладку Chrome и не вернется, что заставляет пользователя нажимать кнопку много раз, потому что он думает, что это не работает.
Когда пользователь нажимает кнопку «активный / неактивный» и база данных обновляется, я вызываю useSWR для изменения для API / клиентов, но именно здесь таблица реакции выдает ошибку : TypeError: data.forEach не является функцией
Я получаю данные из родительского компонента и отправляю их дочернему компоненту в качестве параметра. Дочерний компонент - это тот, который создает таблицу реакции.
<dataTable data={data} mutate={mutate} />;
Это мое объявление таблицы реакций:
const tableInstance = useTable({
columns,
data
}, useFilters, useSortBy, usePagination );
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
setFilter,
pageOptions,
page,
state: { pageIndex, pageSize },
gotoPage,
previousPage,
nextPage,
setPageSize,
canPreviousPage,
canNextPage,
} = tableInstance;