Vue.js axios get之后但DOM render之前的哪个生命周期挂钩

Vue.js axios get之后但DOM render之前的哪个生命周期挂钩,vue.js,vuejs2,Vue.js,Vuejs2,我试图呈现我的DOM,这取决于我从axios get返回的一些数据。我似乎没有把握好时机。get位于创建的钩子中,但是get与实际接收数据之间存在延迟。基本上,如果卖家id中有信息,那么我需要显示取消按钮,否则不显示。这是我的密码: 这是在我创建的钩子中 这就是显示或隐藏按钮的逻辑。我尝试过创建、装载、更新前和更新所有这些,但都没有成功。我也试过$nextTick,但我没能正确地把握时机。这就是我目前拥有的: beforeUpdate: function () { // this.$nextTi

我试图呈现我的DOM,这取决于我从axios get返回的一些数据。我似乎没有把握好时机。get位于创建的钩子中,但是get与实际接收数据之间存在延迟。基本上,如果卖家id中有信息,那么我需要显示取消按钮,否则不显示。这是我的密码:

这是在我创建的钩子中

这就是显示或隐藏按钮的逻辑。我尝试过创建、装载、更新前和更新所有这些,但都没有成功。我也试过$nextTick,但我没能正确地把握时机。这就是我目前拥有的:

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 !== '';
        }

    }
}