我在从laravel api到vue视图中缓慢获取数据时遇到问题,我在这里进行了教程:
import axios from 'axios';
const client = axios.create({
baseURL: '/api',
});
export default {
all(params) {
return client.get('users', params);
},
find(id) {
return client.get(`users/${id}`);
},
update(id, data) {
return client.put(`users/${id}`, data);
},
delete(id) {
return client.delete(`users/${id}`);
},
};
<script>
import api from "../api/users";
export default {
data() {
return {
message: null,
loaded: false,
saving: false,
user: {
id: null,
name: "",
email: ""
}
};
},
methods: {
onDelete() {
this.saving = true;
api.delete(this.user.id).then(response => {
this.message = "User Deleted";
setTimeout(() => this.$router.push({ name: "users.index" }), 1000);
});
},
onSubmit(event) {
this.saving = true;
api
.update(this.user.id, {
name: this.user.name,
email: this.user.email
})
.then(response => {
this.message = "User updated";
setTimeout(() => (this.message = null), 10000);
this.user = response.data.data;
})
.catch(error => {
console.log(error);
})
.then(_ => (this.saving = false));
}
},
created() {
api.find(this.$route.params.id).then(response => {
this.loaded = true;
this.user = response.data.data;
});
}
};
</script>
这是非常缓慢地从api加载数据,我首先在视图中看到空的输入,过一会儿我看到了数据,如果我从laravel打开api数据,我会立即看到数据,所以我的问题是如何加快速度?还是老兄,我做错了什么?
答案 0 :(得分:1)
每当我在Vue中使用API时,通常都会在打开Vue然后像这样传递它之前进行大部分API调用。
<vue-component :user="'{!! $user_data !!}'"></vue-component>
但是如果您必须在Vue组件中执行此操作,则不确定是否会比您的方法有所改进,但是我会像这样用“安装”对其进行设置。
export default {
mounted() {
api.find(this.$route.params.id).then(response => {
this.loaded = true;
this.user = response.data.data;
});
}
}
heres也是有关Axios以及如何在Vue中使用HTTP Requets的很好的教程。
希望这回答了您的问题,祝您好运!