Задать вопрос
@Dasslier
FrontEnd Developer

Как в redux-toolkit правильно использовать селекторы из entityAdapters?

Создал сущность постов

const postsAdapter = createEntityAdapter({
    selectId: (post) => post.postId,
});


Посты являются частью стора ленты, кода там больше, но вырезал т.к. суть не поменяется
const feedSlice = createSlice({
    name: 'feed',
    initialState: {
        posts: postsAdapter.getInitialState(),
        lastPostId: undefined,
        loading: true,
        error: false,
    },
    reducers: {
        postUpdate: (state, { payload }) => {
            postsAdapter.updateOne(state.posts, payload);
        },
    },
});


Также создал селектор
export const postsSelector = postsAdapter
    .getSelectors(({ feed }) => feed.posts);


И соотвественно есть компонент, который рендерит список постов и сам компонент поста.

В посте достаю сам пост из стора через useSelector + селектор сущности поста
const post = useSelector((state) => postsSelector.selectById(state, postId));


И после изменения поста, вызывая action "updatePost" из кода выше, происходит ререндер всего списка постов
На всякий случай список Id тоже взял в селектор в компоненте, который рендерит список
const postsIds = useSelector((state) => postsSelector.selectIds(state));

Но результат один, ререндерятся все посты

И вообще непонятно на кой черт существуют эти селекторы адаптеров, если толка от них нет
  • Вопрос задан
  • 303 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы