Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在使用useState时初始加载状态设置为true?_Javascript_Reactjs_React Hooks_Use Effect_Use State - Fatal编程技术网

Javascript 为什么在使用useState时初始加载状态设置为true?

Javascript 为什么在使用useState时初始加载状态设置为true?,javascript,reactjs,react-hooks,use-effect,use-state,Javascript,Reactjs,React Hooks,Use Effect,Use State,我不明白为什么在初始状态下,isLoading标志设置为true。一开始它不是应该是假的吗?考虑这个简单的例子: const search=()=>{ 常量[isLoading,setIsLoading]=useState(真) 常量[themes,setThemes]=useState([]) useffect(()=>{ const fetchThemes=async()=>{ 试一试{ setIsLoading(真) const result=等待axios.get(url) setThe

我不明白为什么在初始状态下,
isLoading
标志设置为true。一开始它不是应该是假的吗?考虑这个简单的例子:

const search=()=>{
常量[isLoading,setIsLoading]=useState(真)
常量[themes,setThemes]=useState([])
useffect(()=>{
const fetchThemes=async()=>{
试一试{
setIsLoading(真)
const result=等待axios.get(url)
setThemes(result.data.themes.theme)
setIsLoading(错误)
}捕捉(错误){
console.log(错误)
}
}
fetchThemes()
}, [])
返回(
{
正在加载?正在加载……:显示内容
}
)
导出默认搜索引擎

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

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

如果要将其初始化为true,请按如下方式传递true

const [isLoading, setIsLoading] = useState(true)
如果需要,还可以传递false,并将其初始化为false

const [isLoading, setIsLoading] = useState(false)
const[isLoading,setIsLoading]=useState(真)
常量[themes,setThemes]=useState([])
useffect(()=>{
const fetchThemes=async()=>{
试一试{
const result=等待axios.get(url)
setThemes(result.data.themes.theme)
setIsLoading(错误)
}捕捉(错误){
console.log(错误)
}
}
fetchThemes()
}, [])
返回(
{
正在加载?正在加载……:显示内容
}
)
导出默认搜索引擎

更多信息:

您正在询问您自己设置此初始值的原因:)


最确定的是,您从某个地方复制了该代码,
isLoading
的初始状态设置为
true
的原因是,您的整个组件最初实际上处于这种状态,然后在获取的数据准备就绪后将其设置为false。

不,它是
false
,我只是将其更改为在这里询问一个一般性问题总是将
isLoading
设置为false,但我看到人们总是将其设置为
true
。最初将其设置为
true
是没有意义的。当提取还没有开始时,我们怎么能将其设置为
true
?它不应该是
false->true->false
?事实上你在这种情况下是错的(如果您首先呈现组件,然后在单击按钮时获取数据,您是对的)。您使用的钩子只不过是componentDidMount(),因此,如果您在挂载时获取数据,那么在钩子中将初始状态设置为false还是设置为false实际上没有任何区别。
  const [isLoading, setIsLoading] = useState(true)
  const [themes, setThemes] = useState([])

  useEffect(() => {
    const fetchThemes = async () => {
      try {
        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