当前位置: 首页 > 知识库问答 >
问题:

用axios响应中的动作改变vuex存储状态-提交不起作用

公冶光亮
2023-03-14

序言

我完全被这件事难住了。答案是显而易见的,我肯定,但我看不出来。

问题是:

我不能给我的vuex商店写信回复Axios。我阅读并尝试过异步/等待,认为我对promise有很好的把握,并逐字复制了例子。没有骰子。

这是我的变种器,它在通过axios之外的有效载荷时工作:

mutations: {
    setDays (state, payload) {
        state.savedDays = payload
    }
}

此操作是为调试目的创建的,它使用单词“cheese”正确更新存储,并将预期响应对象记录到控制台:

getDays ({commit}) {
    axios.get('/days/')
    .then( (response) => {
        console.log(response.data)
    })
    commit('setDays', "cheese")
}

此操作不会更新存储,但仍会正确登录到控制台:

getDays ({commit}) {
    return axios.get('/days/')
    .then( (response) => {
        // response object removed for debugging
        commit('setDays', "cheese")
        console.log(response.data)
    }
})

我在这里阅读了Vuex文档和许多其他解决方案,尝试了许多方法,包括以下方法(不起作用):

async getDays ({commit}) {
    const response = await axios.get('/days/')
    commit('setDays', response)
})

我没有收到错误消息,使用chrome vue-devTools。提前谢谢你。

好的,我这样做是为了根据下面的评论进一步测试:

async getDays ({commit}) {
    commit('setDays', "crackers")
    const response = await axios.get('/days/byType/30/1')
    console.log("Response:", response.data)
    commit('setDays', response.data)
    return response
}

当这个动作被分派时,存储值成功地变异为“饼干”。

安慰日志成功记录响应对象。

第二次提交什么也不做,即使我尝试提交一个字符串而不是响应。数据对象。

共有1个答案

严瀚昂
2023-03-14

您的第三个和第四个代码示例非常接近<代码>axios。get()返回一个promise。因此,您必须使用asyncwait。然后。要使第四个示例正常工作,您所要做的就是提交响应。数据

async getDays ({commit}) {
    const response = await axios.get('/days/')
    commit('setDays', response.data)
})

要返回该值,请使用以下行

async getDays ({commit}) {
    const response = await axios.get('/days/')
    commit('setDays', response.data)
    return response.data
})

仅供参考,您也可以使用对象分解

const { data } = await axios.get('/days/')
commit('setDays', data)
return data
 类似资料:
  • 我很难得到在商店工作的promise。 我通过一个动作调用突变,这似乎很有效。 该操作被导入到我的组件中: 然后叫: 这一切看起来都有效,但是当我检查Vue开发工具时,Vuex基本状态保持不变,并且我有一个活动突变(setPlace)。我可以点击“全部提交”来提交有效的突变。 在我的组件中,我在getter mapLocation上使用了一个监视程序,当我单击Commit All时会触发该监视程序

  • 问题内容: 我有bootstrap v3。 我在菜单上使用时,它不会切换。我知道该如何使用并建立点击功能,但我认为该功能应包含在引导程序中?那么也许是JavaScript问题? 这是我包含的js / css / bootstrap文件的标头: 这是我的代码: 我可以正确设置吗? (在不相关的注释上,但可能相关吗?当菜单移动时,我单击菜单按钮,它将折叠。尽管再次按下并不会使其崩溃。因此,此问题与另一

  • 我使用maven的Tomcat7插件来运行和调试应用程序,所以当我调试时,我可以看到@ExceptionHandler正在触发和执行return语句。但是我得到的不是JSON而是HTTP 500错误: 如果我返回一个视图或ModelView正在工作,但每当我试图返回ResponseBody或ResponseEntity时,我仍然会得到相同的错误。 最后,如果我不使用tomcat,而是使用Sprin

  • 问题内容: 我在Rails应用程序中使用Elasticsearch&Typeahead执行自动完成。我从这里得到了主意 https://shellycloud.com/blog/2013/10/adding-search-and-autocomplete-to-a- rails-app-with-elasticsearch 我已经正确配置了elasticsearch自动完成功能,因为当我直接通过浏

  • 问题内容: 我正在尝试通过AJAX提交表单,而不是使用常规的POST提交。HTML只是一个标准格式,我的jQuery代码如下: (基于此答案) 我从Submit函数返回false,但是表单仍在提交,我不知道为什么。没有收到任何Firebug错误。 问题答案: 如果html设置正确,则您的代码可以正常工作。这是我的测试html(使用php),因此您可以将其与自己的进行比较。

  • 问题内容: 我想在我的插件中添加AJAX支持,而这个简单的东西有很大的问题。WordPress不允许我使用普通的AJAX,我需要使用WordPress版本。 在任何时候,WordPress函数(应生成输出)都返回0。我认为原因是WP不会触发“函数”。我试图强制该功能多次运行,但是我不知道我可以改进什么。 我尝试添加alert(’echo’); 测试功能,但没有任何效果。我认为AJAX无法运行适当的