2017-12-06 1 views
0
내가 VUE를 사용하고

, 버전 2.5.8VUE 재 장전 하위 구성 요소

나는 아이 요소의를 다시로드, 또는 부모를 다시로드 한 후 다시 아이들의 구성 요소를 강제로합니다.

이걸 사용하려고했는데 $ forceUpdate()하지만 작동하지 않습니다.

수행 방법에 대해 알고 계십니까?

+1

당신은 당신이 다시로드 무슨 뜻인지 설명 할 수? 일반적으로 데이터는 프로그램 상태를 제어하기 때문에 어딘가에서 데이터를 변경해야합니다. –

+0

안녕하세요 @RoyJ 예 많은 하위 구성 요소가있어서 해당 데이터를 재설정하려고합니다 – zaqpiotr

+0

각 하위에 소품으로 초기화 된 데이터가 있고 그 값이 변경되어 다시 소품 값으로 재설정하려고합니까? 그게 뭔가? –

답변

2

어린이가 v-for 등으로 동적으로 생성 된 경우 배열을 지우고 다시 할당하면 자식이 모두 다시 만들어집니다.

기존 구성 요소가 신호에 단순히 응답하도록하려면 이벤트 버스를 소품으로 전달한 다음 응답 할 이벤트를 내 보내야합니다. 이벤트의 정상적인 방향은 올라 갔지만 때로는 이벤트가 다운되는 것이 적절합니다.

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    bus: new Vue() 
 
    }, 
 
    components: { 
 
    child: { 
 
     template: '#child-template', 
 
     props: ['bus'], 
 
     data() { 
 
     return { 
 
      value: 0 
 
     }; 
 
     }, 
 
     methods: { 
 
     increment() { 
 
      this.value += 1; 
 
     }, 
 
     reset() { 
 
      this.value = 0; 
 
     } 
 
     }, 
 
     created() { 
 
     this.bus.$on('reset', this.reset); 
 
     } 
 
    } 
 
    } 
 
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script> 
 
<div id="app"> 
 
    <child :bus="bus"> 
 
    </child> 
 
    <child :bus="bus"> 
 
    </child> 
 
    <child :bus="bus"> 
 
    </child> 
 
    <button @click="() => bus.$emit('reset')">Reset</button> 
 
</div> 
 

 
<template id="child-template"> 
 
    <div> 
 
    {{value}} <button @click="increment">More!</button> 
 
    </div> 
 
</template>

관련 문제