@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));

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

И вообще непонятно на кой черт существуют эти селекторы адаптеров, если толка от них нет
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час