javascript - 如何将 Heroes 数组更改为 res 数组?我正在使用 react useState 挂钩。这在以前的项目中有效,但不是在这里
问题描述
const [Heroes, setHeroes] = useState([])
useEffect(() => {
API.findFavorites().then((res) => {
console.log(res)
setHeroes([...Heroes, res]);
console.log(Heroes)
})
}, []);
我正在尝试将 Heroes 的状态设置为 res,以便可以在 useEffect 中使用它。但它没有设置,我在网上尝试了很多不同的解决方案,但都没有奏效!API.findFavorites 返回一个类似于 [{...}, {...}] 的响应。当我 console.log(Heroes) 时,它记录为 [],而不是 [{...},{...}]。
解决方案
状态更新可能是异步的,因此无法保证设置后立即访问。
对于 useState 钩子也是如此。设置状态不会立即更新状态。相反,它将更新操作排入队列。
所以你需要有第二个使用 Heroes 依赖的 useEffect。
const [Heroes, setHeroes] = useState([]);
useEffect(() => {
API.findFavorites().then(res => {
console.log(res);
setHeroes([...Heroes, res]);
});
}, []);
useEffect(() => {
console.log(Heroes);
}, [Heroes]);
推荐阅读
- dialogflow-es - “不工作”这个词总是会触发 Google Assistant 中的默认意图
- c++ - 尝试使用 ostream 保存文件内容时出错
- azureservicebus - 消息的 Azure 服务总线灾难恢复
- node.js - 创建用于 Node.js 的 SSL 证书
- laravel - Laravel:找不到模块:错误:无法解析“引导程序”
- javascript - 检查数据库中预订日期的可用性
- python - 替换字符串时出现“AttributeError:'float'对象没有属性'replace'”错误
- javascript - 检测多边形内点的准确算法是什么
- apache-kafka - 如何使用 Kafka JDBC 连接器跟踪具有特定列值的行(按 id)?
- tensorflow - tensorflow 嵌套 map_fn 连接两个张量