1

У меня есть простой вопрос о стиле кодирования для одностраничного приложения. Мой передний конец использует React ReduxЧто лучше стиль кодирования CRUD с помощью Redux?

Например, у меня есть стандартная страница CRUD, где данные отображаются в таблице и появляются модальные формы. Таблица данных фильтруется с сервера не от клиента.

Мой вопрос: Если я создаю, обновляю или удаляю данные, я должен вызвать функцию обновления или просто отредактировать ее в магазине redux?

функция Refresh:

  1. Данные постоянно обновляются
  2. Недавно добавленные данные фильтруются
  3. Два раза запрос, медленнее, отвечать на запросы (основная проблема)

Redux магазин:

  1. App выглядит отзывчивым
  2. Один раз запрос
  3. Проиграл сервер функции на стороне фильтра и данных не обновляется, если несколько пользователей использует приложение (основная проблема)

Любой совет будет оценивается

ответ

0

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

ПСЕВДОКОД

// dispatches an action to refresh data without page reload 
export function refreshDataAction() { 
    return (dispatch, getState) => { 

    return (
     fetch('api/data', options) // fetch the data from server and let it filter 
     .then(data => dispatch(updateDataAction(data))) 
    ); 
    }; 
} 

// dispatches an action to update redux state with filtered data 
export default function updateDataAction(data) { 
    return { 
    type: 'UPDATE_DATA', 
    ...data, 
    } 
} 

Тогда вы могли бы просто назватьdispatch(refreshDataAction()). Данные фильтруются, обновление не обновляется.

+0

Итак, это будет запрос в два раза? функция обновления, которую я имею в виду, на самом деле является вызовом API для обновления данных. – Hakutsuru

+0

Да, но не перезагрузка страницы. Это будет один запрос. – lustoykov

+0

Почему один запрос?Я думаю, что это будет два раза, создайте (...). Затем ({refresh()}) – Hakutsuru

1

Редактировать магазин локально, чтобы дать немедленную обратную связь, а затем отправить запрос, и когда вы получите ответ обратно консолидировать магазин с новыми данными

в основном, делать обе вещи и получить максимальную пользу от обоих миров

+0

Как насчет фильтра? скажем, данные сортируются по имени и имеют разбиение на страницы с 10 элементами/страницей. Если я добавил новые данные, имя которых должно быть на другой странице с разбивкой на страницы, то я не могу редактировать хранилище, если у меня нет дополнительной функции фильтрации. Фильтр сделан на стороне сервера – Hakutsuru

0

Вызов обновления в приложении React (не только для React, но и для любого приложения в режиме реального времени) не соответствует целым принципам использования React.

Что вы должны делать, всякий раз, когда в вашем клиенте происходит операция изменения данных, вы должны вызвать вызов API, который соответствующим образом изменяет ваши данные на стороне сервера. Отправьте данные обратно клиенту (вы можете отправить его всем клиентам, если вы представляете себе веб-сокет), сохраните его в состоянии Redux, чтобы вызвать повторную визуализацию.