在saga分发到Redux Store后如何重新渲染组件

时间:2019-07-11 18:31:07

标签: react-redux react-hooks redux-saga rerender

我正在使用react钩子和redux钩子。

我有一个检查redux状态的组件。如果状态不存在,它将执行useDispatch来获取所需的书。

在传奇中,有多种功能,但是我刚刚将保存到存储中的最后一部分发布了,因为这是我要解决的问题。

传奇成功推送到商店(redux开发工具显示新状态),但发布新状态时组件未重新呈现。

这里有任何线索吗?

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
    };
  }
};

0 个答案:

没有答案