javascript - axios 使用 vuex 获取文章 id
问题描述
试图到达文章的 id 并获取它。但是在某个地方我犯了一些错误。因为 vuex 返回空对象并且 router-link 失败。
到目前为止,我做了一些类似下面的东西。
state: {
article: {},
},
getters: {
bringArticle(state){
return state.article;
}
},
mutations: {
updateArticle(state, article){
state.article = article;
}
},
actions: {
getArticle(context, id){
axios.get("/api/articles/" + id)
.then((response) => {
context.commit("updateArticle", response.data);
console.log(response.data)
})
.catch((error) => {
console.log(error);
})
}
}
显然这axios.get("/api/articles/" + id)
行不通……
顺便一提。我在端点看到 id 的数据没有问题。只是卡住了 axios 部分。我怎样才能到达id?
Route::get("/articles/{id}", "Api\ArticlesController@singleArticle");
解决方案
好吧,花了一些时间才弄清楚。并且不确定这是最好的方法,但它现在正在工作。
我将如下所示的路由链接设置为转到 ID。
<router-link :to="{ name: 'detail', params: { id: article.id} }">
然后我创建了api.js
文件并导出了我的电话。
var apiUrl = "api/articles/";
export default {
getArticles: function(){
return axios.get(apiUrl);
},
getArticle: function( id ){
return axios.get(apiUrl + id);
},
}
在我里面我store.js
改变了我的行动提交,比如:
getArticle( { commit }, data ){
path.getArticle( data.id )
.then( function( response ){
commit( 'setArticle', response.data );
})
.catch( function(){
console.log(error)
});
},
最后,我发送它Detail.vue
created(){
this.$store.dispatch( 'getArticle', {
id: this.$route.params.id
});
},
推荐阅读
- azure - Azure Pipelines 下载依赖的 GitHub 版本
- javascript - 文件未使用节点 js 上传到服务器
- c# - 有没有一种好方法可以识别osm文件中的哪个建筑物:部分属于哪个建筑物
- php - 加入 Eloquent Laravel Not Working ID 包含特殊字符或字母
- typescript - 我想创建只允许数字的文本框。我如何在 aurelia 中使用 Typescript 来做到这一点?
- jenkins - docker build 使用 jenkins dind slave + kubernetes 插件抛出 java.net.AbstractPlainSocketImpl.connect UnknownHostException
- vue.js - i18n vue 在更改语言环境时不起作用,使用 vuetify 文本字段中的规则
- c# - 如何通过 C# 访问嵌套标签?
- java - Runnable 没有捕获到异常
- c# - 剑道组合框需要验证不起作用