javascript - 在 reducer 函数中使用 axios 时,状态更新一直等到 promise 解决
问题描述
const initialState = {
data: []
}
function reducer (state, action) {
switch(action.type) {
case 'case':
return (
axios.get('/api').then(
// res => console.log(res)
// res => console.log(res.data)
res => ({ data: res.data })
)
)
default:
return state
}
}
export default function Component() {
const [state, dispatch] = useReducer(reducer, initialState)
console.log(state)
console.log(state.data)
return (
<button onClick={() => dispatch({ type: 'case' })}>button</button>
)
}
在我的代码中,我的错误是什么?我得到Promise {<pending>}
并undefined
在组件内的两行console.log之后。state
在控制台上打印之前似乎没有更新状态。如何解决?
解决方案
推荐阅读
- c++ - 使用 boost::property_tree 编写 CDATA XML 节点
- java - 无法从从自定义 maven nexus 存储库下载的 jar 导入类
- c++ - 带有擦除元素的 C++ 嵌套 for 循环
- php - 在 MySQL db 中搜索数据的 PHP 表单
- .htaccess - 如何防止在 Firefox 中使用 .htaccess 文件提示允许的子文件夹的密码提示
- c++ - 当我们有一个数字和字符串时,>> 运算符如何工作
- c# - 如何将转换器用于日历的texblock?
- amazon-web-services - 用于获取具有最短距离的所有相关顶点的最佳 Neptune 查询
- c# - 如何更高效地在 C# 中创建 300 个秒表?
- ruby-on-rails - Rails 在数据库中存储逗号后 2 位小数的数字