В 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 будет запрашиваться с сервера перед вызовом фильтра и все ок?
Если перед вызовом метода фильтрации всегда запрашивается список prices, и после получения данных применяется фильтр (filter), то отрисовка currentPrices, содержащее отфильрованный новый массив со всеми элементами, прошедшими проверку, должна отработать нормально (как минимум потому что filter возвращает новый массив не пораждает мутации). Просто для рендеринга используйте полученную копию currentPrices из filterino метода.
Однако такой подход, вероятно, отправляет лишние запросы на сервер для получения данных.
Если данные, получаемые для prices, на стороне сервера изменяются не часто - рекомендую посмотреть в сторону хранения аргуметов фильтрации в параметрах URL к примеру, либо храните применяемые фильтры в state компонента и перед рендерингом получайте отфильрованный массив и затем рендерите его. Чтобы снизить количество запросов к серверу.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей