Vue.js axios get之后但DOM render之前的哪个生命周期挂钩
我试图呈现我的DOM,这取决于我从axios get返回的一些数据。我似乎没有把握好时机。get位于创建的钩子中,但是get与实际接收数据之间存在延迟。基本上,如果卖家id中有信息,那么我需要显示取消按钮,否则不显示。这是我的密码: 这是在我创建的钩子中 这就是显示或隐藏按钮的逻辑。我尝试过创建、装载、更新前和更新所有这些,但都没有成功。我也试过$nextTick,但我没能正确地把握时机。这就是我目前拥有的:Vue.js axios get之后但DOM render之前的哪个生命周期挂钩,vue.js,vuejs2,Vue.js,Vuejs2,我试图呈现我的DOM,这取决于我从axios get返回的一些数据。我似乎没有把握好时机。get位于创建的钩子中,但是get与实际接收数据之间存在延迟。基本上,如果卖家id中有信息,那么我需要显示取消按钮,否则不显示。这是我的密码: 这是在我创建的钩子中 这就是显示或隐藏按钮的逻辑。我尝试过创建、装载、更新前和更新所有这些,但都没有成功。我也试过$nextTick,但我没能正确地把握时机。这就是我目前拥有的: beforeUpdate: function () { // this.$nextTi
beforeUpdate: function () {
// this.$nextTick(function () {
function sellerIdNotBlank() {
var valid = this.seller_id == '';
return !valid;
}
if(sellerIdNotBlank()){
this.show_cancel_button = true;
}
// })
},
首先,从后端获取数据并尝试与Vue.js生命周期方法同步是毫无意义的。它永远不起作用 此外,您应该避免在更新生命周期事件之前发生。这通常是一种代码气味。beforeUpdate仅在手动完成某些DOM操作并且需要在Vue.js尝试重新渲染之前再次调整这些操作时使用 此外,show_cancel_按钮是计算属性的一个很好的候选对象。以下是组件的外观:
const componentOpts = {
data() {
return {
seller_id: '',
// ... some more fields
};
},
created() {
axios.get('https://bc-ship.c9users.io/return_credentials').then(response => {
this.seller_id = response.data.seller_id;
this.selected_marketplace = response.data.marketplace;
this.token = response.data.auth_token;
});
},
computed: {
show_cancel_button() {
return this.seller_id !== '';
}
}
}
为什么v-if或v-show/v-hide在那里不适用?是的,这很好,它设置了v-if正在查看的变量。。所以它的v-if=show\u cancel\u button,我需要正确设置show\u cancel\u button您在数据对象中定义show\u cancel\u按钮了吗?为什么不直接在axios的get回调中设置它的值呢?Vue JS应选择新值,并将数据中的viewDefault show_cancel_按钮更新为true,并在axios.get的回调中设置该值。show_cancel_button=false。我不确定我是否完全理解您的问题,但是:sellerIdNotBlank函数中的this不会引用Vue实例。所以这个.seller\u id总是未定义的。所以sellerIdNotBlank总是返回false。
const componentOpts = {
data() {
return {
seller_id: '',
// ... some more fields
};
},
created() {
axios.get('https://bc-ship.c9users.io/return_credentials').then(response => {
this.seller_id = response.data.seller_id;
this.selected_marketplace = response.data.marketplace;
this.token = response.data.auth_token;
});
},
computed: {
show_cancel_button() {
return this.seller_id !== '';
}
}
}