Фильтр на React

128
17 августа 2021, 03:00

В state массив и функция:

prices: [
    {price: 1030},
    {price: 500},
    {price: 15500},
    {price: 1300},
    {price: 900},
]

Записываю его так:

filterino = () => {
    let currentPrices = store._state.airCard.prices.filter(function (item) {
        return item.price > 1000;}
    );

По идее, в переменной currentPrices копия с 3 объектами.

Вопрос, как мне отрисовать currentPrices не перезатирая текущий state? Или всегда актуальный state будет запрашиваться с сервера перед вызовом фильтра и все ок?

Answer 1

Если перед вызовом метода фильтрации всегда запрашивается список prices, и после получения данных применяется фильтр (filter), то отрисовка currentPrices, содержащее отфильрованный новый массив со всеми элементами, прошедшими проверку, должна отработать нормально (как минимум потому что filter возвращает новый массив не пораждает мутации). Просто для рендеринга используйте полученную копию currentPrices из filterino метода.

Однако такой подход, вероятно, отправляет лишние запросы на сервер для получения данных. Если данные, получаемые для prices, на стороне сервера изменяются не часто - рекомендую посмотреть в сторону хранения аргуметов фильтрации в параметрах URL к примеру, либо храните применяемые фильтры в state компонента и перед рендерингом получайте отфильрованный массив и затем рендерите его. Чтобы снизить количество запросов к серверу.

READ ALSO
Заменить onclick на addEventListener

Заменить onclick на addEventListener

Как заменить onclick на addEventListener так, чтобы остались те же свойства? То есть после нажатия на <button id="delete">Delete</button> при нажатии на элементы...

74
Автоматический механический клик по button при входе на страницу

Автоматический механический клик по button при входе на страницу

Как можно реализовать автоматический механический клик по button id="winterfell" при входе на страницу?Механический,в том смысле,чтобы после входа...

88