首页 > 解决方案 > 为什么在使用 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

另一件事是,如果我们将其设置为truefalse最初在上面的代码中,useEffect仍然运行相同,屏幕上的结果也将相同。那么,为什么true?这是某种标准吗?

标签: javascriptreactjsreact-hooksuse-effectuse-state

解决方案


初始化状态时传递的值取决于您。

如果您希望将其初始化为 true,您可以像这样传递 true。

const [isLoading, setIsLoading] = useState(true)

如果你愿意,你也可以传递 false ,它将被初始化为 false

const [isLoading, setIsLoading] = useState(false)

推荐阅读