Создал сущность постов
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));
Но результат один, ререндерятся все посты
И вообще непонятно на кой черт существуют эти селекторы адаптеров, если толка от них нет