Size: a a a

ECMAScript Developers

2020 June 05

α

αμαν in ECMAScript Developers
если правильно понял
источник

α

αμαν in ECMAScript Developers
такое лучше на линзах или иммере делать
источник

KS

Kutman Soronbaev in ECMAScript Developers
αμαν
const exploreUsers = [...state.exploreUsers]
const targetUser = exploreUsers[action.payload.index]
const followers = targetUser.followers.filter(user => user.username !== action.payload.username)

exploreUsers[action.payload.index] = {...targetUser, followers}

return {
 ...state,
 exploreUsers
}
да,спасибо за решеине)
источник

и

игорь in ECMAScript Developers
αμαν
такое лучше на линзах или иммере делать
Линзах?
источник

α

αμαν in ECMAScript Developers
или стейт нормализовать чтоб изменения были O(1)
источник

α

αμαν in ECMAScript Developers
если интенсивно меняется стейт таким образом, то это имеет смысл
источник

и

игорь in ECMAScript Developers
Что такое линзы?
источник

ES

Emir Sabyrkulov in ECMAScript Developers
const exploreUsers = [...state.exploreUsers]

бесполезное действие же, не? можно сразу брать state.exploreUsers, ибо filter 🤔
источник

KS

Kutman Soronbaev in ECMAScript Developers
Kutman Soronbaev
обычным филтером я не смог удалить, так как индексы айтема и followrs могут быть разными
-
источник

α

αμαν in ECMAScript Developers
Emir Sabyrkulov
const exploreUsers = [...state.exploreUsers]

бесполезное действие же, не? можно сразу брать state.exploreUsers, ибо filter 🤔
там не фильтр, а мап нужен, но будет менее читабельно
источник

α

αμαν in ECMAScript Developers
игорь
Что такое линзы?
источник

и

игорь in ECMAScript Developers
Сенк ю
источник

KS

Kutman Soronbaev in ECMAScript Developers
@amankkg спасибо
источник

ES

Emir Sabyrkulov in ECMAScript Developers
αμαν
там не фильтр, а мап нужен, но будет менее читабельно
я имел ввиду что задумка […state.exploreUsers], наверно чтобы не мутировать стейт, но так мы работаем с объектами внутри массива это не поможет, а просто создаем новую переменную и создаем новый массив с элементами, которые поинтеры на объекты в стейте, используя
источник

АД

Адылбек Джороев... in ECMAScript Developers
Kutman Soronbaev
сделал таким образом, но мне кажется это повлияет в будущем на производительность
Сразу юзай normalizr
источник

α

αμαν in ECMAScript Developers
Emir Sabyrkulov
я имел ввиду что задумка […state.exploreUsers], наверно чтобы не мутировать стейт, но так мы работаем с объектами внутри массива это не поможет, а просто создаем новую переменную и создаем новый массив с элементами, которые поинтеры на объекты в стейте, используя
проблема там в том, что при глубоком обновлении стейта нужно иммутабельно всё дерево до корня (объект state) обновлять, поэтому и этот массив надо пересоздать, и объект юзера, и массив его фолловеров
источник

a

azdek in ECMAScript Developers
можно использовать такой хак что бы избежать мутирования JSON.parse(JSON.stringify(data))
источник

ES

Emir Sabyrkulov in ECMAScript Developers
Я и говорю, но ведь […[ { key: “value” } ] ] создат новый массив, но объекты не будут скопированы, они так и останутся поинтерами к state.exploreUsers[index]
источник

α

αμαν in ECMAScript Developers
azdek
можно использовать такой хак что бы избежать мутирования JSON.parse(JSON.stringify(data))
меньше кода не значит лучше или быстрее))
источник

α

αμαν in ECMAScript Developers
Emir Sabyrkulov
Я и говорю, но ведь […[ { key: “value” } ] ] создат новый массив, но объекты не будут скопированы, они так и останутся поинтерами к state.exploreUsers[index]
а зачем при создании нового массива пересоздавать объекты внутри? пусть лежат те же, мы просто по индексу обновим только нужный
источник