react-redux - saga 发送到 redux 商店后如何重新渲染组件
问题描述
我正在使用反应钩子和 redux 钩子。
我有一个检查 redux 状态的组件。如果状态不存在,它将执行useDispatch
获取所需书籍的操作。
在传奇中,有各种各样的功能,但我只是发布了保存到商店的最后一点,因为这是我试图掌握的问题。
saga 成功推送到商店(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
};
}
};
解决方案
推荐阅读
- node.js - 当测试用例需要更多时间时,伊斯坦布尔与 mocha 不生成覆盖率报告
- java - 使用 java 类执行类似 mongoDB shell 的查询
- gradle - JDeveloper 和 gradle 集成
- keras - 使用 Keras 进行元素乘法
- amazon-web-services - AWS 内部负载均衡器的 SSL 证书
- sql - 将带有约束的 SQL 多对多 JOIN 转换为 DAX/PowerBI
- php - 减少 Laravel 中更新查询的时间(没有 for 循环,对于相同的键和多个值)
- unit-testing - Zend Framework 3 中的 PHPUnit 测试
- angular - 如何在 Angular-6 中重新实例化/销毁组件
- mysql - SQL 语法错误和事件无法启动