javascript - 为什么在使用 useState 时初始加载状态设置为 true?
问题描述
我很困惑为什么isLoading
标志在初始状态下设置为true。一开始不应该是假的吗?考虑这个简单的例子:
const SearchCharity = () => {
const [isLoading, setIsLoading] = useState(true)
const [themes, setThemes] = useState([])
useEffect(() => {
const fetchThemes = async () => {
try {
setIsLoading(true)
const result = await axios.get(url)
setThemes(result.data.themes.theme)
setIsLoading(false)
} catch (err) {
console.log(err)
}
}
fetchThemes()
}, [])
return (
{
isLoading ? <h1>Loading......</h1> : <h1>Display Content</h1>
}
)
export default SearchCharity
另一件事是,如果我们将其设置为true
或false
最初在上面的代码中,useEffect
仍然运行相同,屏幕上的结果也将相同。那么,为什么true
?这是某种标准吗?
解决方案
初始化状态时传递的值取决于您。
如果您希望将其初始化为 true,您可以像这样传递 true。
const [isLoading, setIsLoading] = useState(true)
如果你愿意,你也可以传递 false ,它将被初始化为 false
const [isLoading, setIsLoading] = useState(false)
推荐阅读
- flutter - 刷新页面时AutoCompleteTextField检索null
- python - asyncio.gather() 在具有协程字段的 dict 列表上?
- java - 从包装类中的类型反序列化杰克逊中的动态实体
- gitlab - Gitlab管道失败:错误:准备失败:来自守护进程的错误响应:toomanyrequests
- c++ - 复制赋值运算符返回 *this vs (*this)
- android - 如何将 3 个带有意图的变量发送到 kotlin 中的另一个活动?
- java - Java8如何根据值获取对象列表
- azure - 如何使用 java 生成 azure blob 存储 SAS url?
- javascript - 如何在javascript中使用地图?
- gradle - Gradle警告无法分配'LinkedHashMap
' 到 ' 类 '关于想法