繁体   English   中英

Nextjs - 错误:对象作为 React 子对象无效(找到:[object Promise])

[英]Nextjs - Error: Objects are not valid as a React child (found: [object Promise])

我在 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" )
 }

 async function returnIP () {

    let ipresponse = await axios.get(ipurl)
              .catch(errors => console.log(errors));
    let ip = await ipresponse.data;

    console.log("IP is -- : " + ip)
    return ip;
 }

控制台语句返回正常,但触发了此错误:

错误:对象作为 React 子对象无效(找到:[object Promise])。

我知道通过 Promise 是触发该错误的原因,但我现在不确定如何解决它。 所以我在寻求帮助,拜托。

React child 类型不包括类型对象 Promise 的原因。 我建议你应该使用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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM