Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Reactjs Nextjs-错误:对象作为React子对象无效(找到:[对象承诺])_Reactjs_Next.js_Server Side Rendering - Fatal编程技术网

Reactjs Nextjs-错误:对象作为React子对象无效(找到:[对象承诺])

Reactjs Nextjs-错误:对象作为React子对象无效(找到:[对象承诺]),reactjs,next.js,server-side-rendering,Reactjs,Next.js,Server Side Rendering,我在Nextjs中使用动态路由,但我希望在进行服务器端渲染之前获得客户端的IP,以便为社交媒体共享添加头 这是我的密码: function myIP() { const router = useRouter() const { id } = router.query; // Destructuring our router object return returnIP() .then((ip) => { conso

我在Nextjs中使用动态路由,但我希望在进行服务器端渲染之前获得客户端的IP,以便为社交媒体共享添加头

这是我的密码:

 function myIP() {
    const router = useRouter()
    const { id } = router.query; // Destructuring our router object
    
    return returnIP()
        .then((ip) => {
            console.log("It an IP -- " + ip);
            return (
                <>
                <h2>
                  {id} with IP {ip}
                </h2>
                </>
            );
        })
    .catch(error => "Error" )
 }
console语句返回良好,但会触发此错误:

错误:对象作为React子对象无效(找到:[对象承诺])


我理解,通过承诺是触发错误的原因,但我不确定此时如何绕过它。因此,我请求帮助。

类型的原因React child不包括类型对象承诺。我建议您使用state返回Ip。例如:

function myIP() {
    const router = useRouter()
    const { id } = router.query; // Destructuring our router object
    const [ip, setIp] = useState(<div/>);

    useEffect(() => {
        returnIP()
            .then((ip) => {
                console.log("It an IP -- " + ip);
                const componentIp = <>
                    <h2>
                        {id} with IP {ip}
                    </h2>
                </>;

                setIp(componentIp)
                return componentIp;
            })
            .catch(error => "Error" )
    }, [])

    return ip;
}
函数myIP(){
const router=useRouter()
const{id}=router.query;//解构路由器对象
const[ip,setIp]=useState();
useffect(()=>{
returnIP()
。然后((ip)=>{
log(“它是一个IP--”+IP);
常量组件P=
{id}与IP{IP}
;
setIp(组件IP)
返回组件;
})
.catch(错误=>“错误”)
}, [])
返回ip;
}

HI Vieta,我能再问一个问题吗?我试图将“id”常量从动态路由传递到returnIP,但它没有定义。你知道为什么吗?使用的URL地址为/posts/102,文件名为[id].js,位于pages下的posts目录中。
function myIP() {
    const router = useRouter()
    const { id } = router.query; // Destructuring our router object
    const [ip, setIp] = useState(<div/>);

    useEffect(() => {
        returnIP()
            .then((ip) => {
                console.log("It an IP -- " + ip);
                const componentIp = <>
                    <h2>
                        {id} with IP {ip}
                    </h2>
                </>;

                setIp(componentIp)
                return componentIp;
            })
            .catch(error => "Error" )
    }, [])

    return ip;
}