2017-02-20 10 views
2

, когда функция рендеринга в Vue.js отображает элемент dom, я пытаюсь переписать директиву v-if с помощью JavaScript, если это так.функция рендеринга в Vue.js

export default{ 
    destroyed(){ 
     console.log("destroyed") 
    }, 
    props:['show'], 
    render(h){ 
     if(this.show){ 
      return h('div',{domProps:{innerHTML:'test'},on:{click:this.quit}}) 
     } 
    }, 
    methods:{ 
     quit(){ 
      this.$destroy(); 
     } 
    } 
} 

Но когда шоу ложно, похоже, что экземпляр Vue не перейдет на жизненный цикл destory.

Если я использую метод vm. $ Destory, экземпляр переходит в жизненный цикл destory, но элемент dom все еще существует.

как доза это произойдет?

+0

Я могу ошибаться, но я думаю, что каждый компонент вю должен оказывать по меньшей мере, один элемент. Если вы ничего не предпринимаете, vue может иметь проблемы с уничтожением компонента. – nils

+0

@nils спасибо. Если я верну элемент, то как он может вызвать разрушение жизненного цикла? – liajoy

ответ

1
export default{ 
    destroyed(){ 
     console.log("destroyed") 
    }, 
    props:['show'], 
    render(h){ 
     if(this.show){ 
      return h('div',{domProps:{innerHTML:'test'},on:{click:this.quit}}) 
     }else { 
      return null 
     } 
    }, 
    methods:{ 
     quit(){ 
      this.$destroy(); 
     } 
    } 
} 

Здесь работает скрипка: https://jsfiddle.net/srinivasdamam/3s18pjrg/

+0

благодарю вас. Но это еще не может привести к разрушению жизненного цикла. – liajoy