为什么 React 和 Axios 响应未定义,尽管 API 上提供了一切? [已关闭]

问题描述 投票:0回答:1

有一个API,可以从数据库中提取数据,这些数据应该显示在登陆页面上。

一切似乎都拼写正确,但着陆给出未定义。

api正确输出

着陆

可能是什么问题? 代码:


function Link() {
    let params = useParams();

    try {
        axios.get(`https://api.***/get_link?id=${params.id}`)
        .then(res => {
            if(res.data.error === false) {
                document.title = `${res.data.link.artists} — ${res.data.link.title} ***`
                document.getElementById('title').innerHTML = res.data.link.title
                document.getElementById('artists').innerHTML = res.data.link.artists
                document.getElementById('cover').src = 'https://api.***/' + res.data.link.cover
                let link = res.data.link
                if(link.apple) {
                    document.getElementById('apple').href = link.apple
                    document.getElementById('apple').hidden = ''
                }
                if(link.vk) {
                    document.getElementById('vk').href = link.vk
                    document.getElementById('vk').hidden = ''
                }
                if(link.yandex) {
                    document.getElementById('yandex').href = link.yandex
                    document.getElementById('yandex').hidden = ''
                }
                if(link.yt_music) {
                    document.getElementById('yt').href = link.yt_music
                    document.getElementById('yt').hidden = ''
                }
                if(link.spotify) {
                    document.getElementById('spotify').href = link.spotify
                    document.getElementById('spotify').hidden = ''
                }
                if(link.soundcloud) {
                    document.getElementById('soundcloud').href = link.soundcloud
                    document.getElementById('soundcloud').hidden = ''
                }
                if(link.itunes) {
                    document.getElementById('itunes').href = link.itunes
                    document.getElementById('itunes').hidden = ''
                }
                if(link.tidal) {
                    document.getElementById('tidal').href = link.tidal
                    document.getElementById('tidal').hidden = ''
                }
                if(link.deezer) {
                    document.getElementById('deezer').href = link.deezer
                    document.getElementById('deezer').hidden = ''
                }
            } else {
                redirect()
            }
        })
    } catch {

我已经绞尽脑汁了xd

javascript reactjs node.js react-hooks axios
1个回答
-1
投票

您的代码片段可能不足以得出任何具体结论,但是,由于它是一个反应应用程序,您必须确保通过

useEffect
钩子更新渲染的数据,以便在获取数据后相应地更新您的页面。

此外,我相信您必须更新您的

Link()
函数才能使用
try/catch
.then
。将您的 axios 请求归因于
const
,代码将等待您的请求终止后再继续。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.