reactjs - useState 钩子中的初始值
问题描述
在这种情况下,将 useState 中的初始值设为空数组是否有意义:
const [products, setProducts] = useState([]);
useEffect(() => {
axios
.get('/shoes')
.then((res) => {
setProducts(res.data);
})
.catch((err) => {
console.error(err);
});
}, []);
我什么时候应该有初始值,什么时候没有?
解决方案
使用与结果形状相同的初始状态可以使以后使用有状态变量更容易。例如,如果您使用空数组作为初始状态,稍后,您将能够:
return (
<div>
{products.map(prod => <span>{prod.name}</span>)}
</div>
);
而如果您不使用初始状态,则必须首先确保该状态products
存在:
return (
<div>
{products?.map(prod => <span>{prod.name}</span>)}
</div>
);
或者
return (
<div>
{products && products.map(prod => <span>{prod.name}</span>)}
</div>
);
推荐阅读
- python - 使用 psycopg2 对多组参数执行查询
- java - 尝试创建 RequestSpecBuilder 对象时出现 NoSuchMethodException
- android - Fastlane 分发失败并出现错误“应用程序分发找不到您的应用程序”
- vb.net - 如何使用 Visual Studio VB.NET 计算 Access 数据库中的值
- javascript - 使用 axios 在没有网络的情况下在 React 应用程序上工作
- c++ - 为什么 libstdc++ 两者都实现
和 迭代器上的二元运算符重载? - reactjs - 将 react-transition-group 与 TypeScript 一起使用时“任何值的不安全分配”
- nlp - 为不同的词嵌入算法预处理语料库
- google-sheets - Google 电子表格 - 如何从 Wikipedia 导入特定表格?
- javascript - 如何通过添加总计和排序进行自动类型推断