如何使用react-query useMutation和axios post方法获取响应数据?

qf9go6mv  于 2023-03-02  发布在  iOS
关注(0)|答案(1)|浏览(208)

我尝试从一个axios post方法中获取数据。我可以只使用axios来获取它。我不明白为什么使用react-query useMutation控制台日志的响应数据是未定义的。
api/index.js

export const postCreateMeetingId = async (token) => {
    await axios.post('http://localhost:3001/create-meeting/', {token:`${token}`}, {
        headers: {
           "Content-Type": "application/json",
            authorization: `${token}`,
        },
    })
    .then((res) => {
        console.log(res.data) //successfully got the data here
        return res.data
    })
}

pages/meetingRoom.js

var token='my token is here'
export default function MeetingRoom(){
    const {mutate, data} = useMutation(postCreateMeetingId, {
        onSuccess: async (res) => {
            console.log(res) //undefined
            console.log(data) //undefined
        }
    })
    const getMeetingAndToken = async () => {
        return mutate(token)
    }

    return(
        <div>
            <button onClick={getMeetingAndToken}>get</button>
        </div>
    );
}

我想知道如何使用useMutation获取响应数据,这样我就可以将此数据发送到另一个post API。

ezykj2lf

ezykj2lf1#

postCreateMeetingId没有返回任何内容。您使用axios.post创建了一个Promise,并且您await了它,但是您没有返回它。函数中async / await.then()的混合不必要地使事情复杂化了:

export const postCreateMeetingId = (token) => {
    return axios.post('http://localhost:3001/create-meeting/', {token:`${token}`}, {
        headers: {
           "Content-Type": "application/json",
            authorization: `${token}`,
        },
    })
}

相关问题