Как сделать рендеринг компонента после отправки саги в онлайн-хранилище - PullRequest
0 голосов
/ 11 июля 2019

Я использую реагирующие хуки и редукционные хуки.

У меня есть компонент, который проверяет избыточность на состояние.Если состояния там нет, он выполнит useDispatch для извлечения необходимых книг.

Внутри саги есть множество функций, но я только что опубликовал последний бит, который сохраняет в магазине, как этопроблема, которую я пытаюсь уловить.

Сага успешно отправляет в хранилище (инструменты редукционного разработчика показывают новое состояние), но компонент не перерисовывается при публикации нового состояния.

Любые подсказки здесь?

myComponent.js

  const topBooks = useSelector(state => state.BOOKS[TOP_BOOKS]);
  const dispatch = useDispatch();

  if (!topBooks) {
    dispatch(fetchTopBooks(TOP_BOOKS));
  }

  return (
    <Shelf>
      <Books books={topBooks} />
    </Shelf>
  );
}

bookSaga.js

function* saveBooks() {
  while (true) {
    const { payload } = yield take(SAVE_BOOKS);

    yield put({
      type: SET_TOP_BOOKS,
      payload
    });
  }
}

bookReducer.js

const initialState = {};

const actionMap = {
  [SET_TOP_BOOKS](state, action) {
    return {
      TOP_BOOKS: action.payload
    };
  }
};
...