2017-02-20 2 views
2

dom 요소를 렌더링하기 위해 Vue.js에서 render 함수를 사용할 때, 나는 JavaScript와 함께 if-if 지시어를 다시 작성하려고합니다.render function in 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(); 
     } 
    } 
} 

그러나 show가 false 일 경우, Vue 인스턴스는 destory lifecycle로 이동하지 않습니다.

vm. $ destory 메소드를 사용하는 경우 인스턴스는 destory lifecycle으로 이동하지만 dom 요소는 계속 존재합니다.

복용량은 어떻게됩니까? 여기

+0

내가 잘못 될 수도 있지만 나는 모든 VUE 구성 요소는 적어도 하나 개의 요소를 렌더링 할 필요가 있다고 생각합니다. 아무것도 렌더링하지 않으면 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