【问题标题】:Can't destructure data from axios post request response无法从 axios 发布请求响应中解构数据
【发布时间】:2022-01-28 03:08:12
【问题描述】:

所以我正在制作一个简单的 CRUD 应用程序,试图让自己熟悉 redux。基本上我正在从表单传输数据并向服务器发送帖子请求以创建新的博客帖子(或多或少)。这是 onSubmit 的代码:

const handleSubmit = (e) => {
        e.preventDefault()
        dispatch(createPost(postData));
    }

这里是被调度的动作和错误的来源(src/actions/posts.js):

export const createPost = (post) => async (dispatch) => {
    try 
    {
        const { data } = await api.createPost(post);
        dispatch({ type: "CREATE", payload: data});
    } 
    catch (error) 
    {
        console.log(error.message);
    }
}

此函数无法从 api 的响应中解构数据,因为响应未定义。下面是从 src/api/index.js 发送请求的代码:

export const createPost = (newPost) => {
   axios.post(url, newPost);
}

当我使用 .then() 控制台记录此函数的响应时,它会返回 201 以及对成功请求的期望。所以响应返回 201 并且条目被添加到数据库中,但是我的操作函数无法从响应中解构数据,因为它是未定义的。我的愚蠢错误是什么?

【问题讨论】:

标签: javascript reactjs post redux axios


【解决方案1】:

您没有从函数返回值。试试

export const createPost = (newPost) => {
    return axios.post(url, newPost);
}

【讨论】:

  • 这行得通,我能够解构响应。但是,即使操作的有效负载现在包含正确的数据,我的商店似乎也正在向数组中添加未定义的对象。这是我在这种情况下的减速器:return [...posts, action.paylaod];。没有中断,正确的默认情况返回状态,初始状态是空数组。
  • @LoganF “有效载荷”一词中的错字?
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 2020-07-07
  • 2022-01-08
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
相关资源
最近更新 更多