Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 如何访问´;它没有初始化吗?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何访问´;它没有初始化吗?

Javascript 如何访问´;它没有初始化吗?,javascript,reactjs,Javascript,Reactjs,如果尚未设置状态,如何在组件中安全使用对象? 我将其初始化为null(我可以使用{},但这会导致其他效果)。我得到: 无法读取未定义的属性“name” const[user,setUser]=useState(null); someService(用户=>setUser(用户)) const someRef=useRef(null); 如果(!用户){ //为了避免未定义的user.name,我尝试了这个方法,但是它导致了useRef的问题(因为当!user!时,实际的someRef没有呈现)

如果尚未设置状态,如何在组件中安全使用对象? 我将其初始化为null(我可以使用{},但这会导致其他效果)。我得到:

无法读取未定义的属性“name”

const[user,setUser]=useState(null);
someService(用户=>setUser(用户))
const someRef=useRef(null);
如果(!用户){
//为了避免未定义的user.name,我尝试了这个方法,但是它导致了useRef的问题(因为当!user!时,实际的someRef没有呈现)
返回加载用户

} 返回( {user.name}

你好 )
工作示例:

此时未创建用户,我们应呈现“正在加载的用户”。这很好,但someRef会导致问题,因为存在消息,但组件未呈现。请取消注释第5行和注释第6行,以查看其工作情况。请尝试:

const [user, setUser] = useState(null);
someService(user => setUser(user))

render(){
    return({user? <p>{user.name}</p> :<p>loading user</p>});
}

假设
render
是一个
return
的输入错误,这似乎应该可以工作。请提供一个显示问题和您试图获取
name
user
对象的示例。对此表示抱歉。删除了大量代码以说明错误,并且发生了错误。我更新了示例。我正在做的是c由于useref出现问题,您的代码看起来无效。无法返回两个HTML节点子项。请显示您正在运行的实际代码。此外,我不知道ref与
user
上的undef属性
name
有什么关系。完成。我现在更改了它,非常抱歉,谢谢,但仍然不清楚如何处理它。错误在哪里/是什么h
useRef
?请阅读链接。如果我们无法重现问题,则无法提供帮助。您好。是的,这是我的第一个方法,但这导致了我的useRef出现问题(问题已更新)
const [user, setUser] = useState(null);
someService(user => setUser(user))

render(){
    return({user? <p>{user.name}</p> :<p>loading user</p>});
}
import React, { useState, useEffect } from 'react'

export default function Test() {
    const [user, setUser] = useState(null);
    const someRef = useRef(null);
    const [loaded, setLoaded] = useState(false);

    useEffect(() => {
        if (user && someRef) {
            setLoaded(true)
        }
    }, [user, someRef])

    return (
        loaded ?
            <div>
                <p>{user.name}</p>
                <div ref={someRef}>hello</div>
            </div> : <div>not loaded yet</div>
    )
}