React axios get参数未定义

q7solyqu  于 12个月前  发布在  iOS
关注(0)|答案(2)|浏览(123)

我想从一个API中获取一些数据,参数为当前用户的用户名。

useEffect(()=>{
        console.log(currentUser[0]?.id.toString())
        if (currentUser) {
            console.log(currentUser[0]?.id.toString())
            axios.get(`http://127.0.0.1:8000/get_chat2/?user1=${currentUser[0]?.id.toString()}&user2=`).then(res=>{
                setUsers(res.data)
                console.log(res.data)
            })    
},[currentUser])

当我打印currentUser[0]?.id.toString()时,我得到了用户的id,但当我发送请求时,它是未定义的。我试着把它变成一个字符串,但它仍然是未定义的。另外,当我使用用户名而不是id时,它不是未定义的。

goucqfw6

goucqfw61#

如果currentUser是异步值,则尝试以下代码:

useEffect(()=>{
        const {id} = currentUser?.[0] || {};
        if (id) {
            axios.get(`http://127.0.0.1:8000/get_chat2/?user1=${id}&user2=`).then(res=>{
                setUsers(res.data)
                console.log(res.data)
            })    
},[currentUser])
lymnna71

lymnna712#

检查API端点并确保其正确配置为接受“user1”,然后进行调试以验证currentUser[0]的值?.id.toString(),以确保它是正确的。
修改后的代码,我认为这将工作。

useEffect(() => {
    const firstUser = currentUser?.[0];
    
    if (firstUser) {
        axios.get(`http://127.0.0.1:8000/get_chat2/?user1=${firstUser.id}&user2=`)
            .then(res => {
                setUsers(res.data);
            });
    }
}, [currentUser]);

相关问题