Почему я должен обновлять страницу, когда я удаляю строку?

Я использую опцию удаления строки для моей таблицы с данными API, и запрос на удаление работает хорошо, но мне нужно обновить страницу, чтобы обновить мои строки. Знаете ли вы, почему и что я могу сделать? я использую react-table-v7

const useTableResource = () => {
  const {data} = apiData();
  const resourcesData = data;
  
  const resourcesDataLength = resourcesData.length;
  const query = window.matchMedia('(max-width: 750px)');
 

  const resourcesColumns = useMemo(() => [
    {Header: 'Tittle', accessor: 'name'},
    {
      id: 'delete',
      accessor: () => 'delete',
      disableSortBy: true,
      Cell: ({row}) => <div onClick = {(event) => event.stopPropagation()} style = {{
        display: 'flex',
        justifyContent: 'center'
      }}>
        <DeleteModal delb = {async () => {
          await axios.delete(`api/resources?_id=${row.original._id}`);
        }}/>

      </div>

    }
  ], []);


  const tableInstance = useTable({
    columns: resourcesColumns,
    data: resourcesData, //here load the data for my table
    disableSortRemove: true,
    initialState: {
      sortBy: [{id: 'resourceType.name', desc: false}],
      pageSize: 10
    }
  }, useSortBy, usePagination);


  return {
    tableInstance,
    resourcesColumns,
    resourcesDataLength
  };
};

export default useTableResource;
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Интервьюер: Почему &apos;[] instanceof Object&apos; возвращает &quot;true&quot;?
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Все мы знаем, что [] instanceof Array возвращает true, но почему [] instanceof Object тоже возвращает true?
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) - это древовидная структура данных, которая представляет структуру и иерархию исходного кода на языке...
0
0
53
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Мне нужно обновить страницу, чтобы обновить мои строки

Это потому, что вы не обновляете свои resourceData на основе выполняемой вами операции. И react повторно отображает компонент, если в состояние (resourceData) внесены какие-либо изменения.

Как я могу реагировать на повторную визуализацию компонента?

Один из способов — снова вызвать apiData() после успешной операции удаления и обновить состояние resourceData или, если вы считаете, что операция API является дорогостоящей, затем изменить состояние resourceData, чтобы удалить удаленный элемент.

Я не использую useState для управления данными, а вы работаете с useRowState? ссылка

Mark 14.02.2023 22:59

@Mark, нашел эту ссылку в документации, которой вы поделились, где она демонстрирует использование состояния и обновление данных таблицы.

shanmukha vangaru 15.02.2023 06:20

Есть несколько вариантов Вы можете либо повторно получить «resourceData», используя свой метод API после удаления. Что требует другого вызова API

Или обновите метод удаления, чтобы удалить данные из списка.

Если вы хотите использовать второй вариант, я бы рекомендовал использовать useState для управления состоянием resourceData.

Что-то вроде

Const {resourceData, setResourceData} = useState(data)

И в методе удаления

SetResourceData(resourceData.filter(record => record.id != id))

Я не знаю почему, но если я console.info resourceData, он показывает мне пустые массивы, но если я записываю данные, console.info показывает мне 5 пустых массивов и 3 массива с объектами данных

Mark 14.02.2023 22:54

Я не использую useState, а если он работает с useRowState?

Mark 14.02.2023 22:57
ссылка
Mark 14.02.2023 22:57

Как я решил эту проблему,

  const [datos, setDatos] = React.useState(React.useMemo(() => data, []));

Мне пришлось использовать useEffect

useEffect(() => {
    setDatos(data);
  }, [data]);

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

Community 19.02.2023 19:29

Другие вопросы по теме