Vue에서 구성 요소는 일반적으로 props 속성을 통해 데이터를 전달할 수 있지만 때로는 관련되지 않은 구성 요소 간에 데이터를 전달해야 하는 경우도 있습니다.
예를 들어, 한 구성 요소에서 다른 구성 요소로 데이터를 전달해야 하지만 두 구성 요소가 연결되어 있지 않을 수 있습니다. 이 경우 Vue의 이벤트 시스템을 사용하여 상위가 아닌 구성 요소와 하위 구성 요소 간의 통신을 구현할 수 있습니다. 특히 Vue에서 $on 및 $emit 메소드를 사용하여 이벤트를 보내고 받을 수 있습니다.
$on 메소드는 현재 구성요소에 사용자 정의 이벤트를 등록하는 데 사용됩니다. 이벤트가 트리거되면 현재 구성요소가 해당 작업을 수행할 수 있습니다. $emit 메소드는 사용자 정의 이벤트를 트리거하고 이벤트를 수신하는 모든 구성요소에 지정된 매개변수를 전달하는 데 사용됩니다.
예제는 다음과 같습니다.
<!-- 组件A --> <template> <div> <!-- 触发事件 --> <button @click="sendDataToB">传递数据给组件B</button> </div> </template> <script> export default { methods: { sendDataToB() { // 发送事件 this.$emit('sendData', '这是来自组件A的数据') } } } </script>
<!-- 组件B --> <template> <div> <!-- 监听事件并接收数据 --> <div>收到的数据:{{ receivedData }}</div> </div> </template> <script> export default { data() { return { receivedData: '' } }, mounted() { // 监听事件 this.$on('sendData', (data) => { this.receivedData = data }) } } </script>
이 예에서는 컴포넌트 A에 "sendData"라는 사용자 정의 이벤트를 등록하고 $emit 메소드를 사용하여 이벤트를 트리거했습니다. $emit 메소드는 이벤트를 수신하는 모든 구성요소에 "This is data from component A"라는 문자열을 매개변수로 전달합니다.
컴포넌트 B에서는 마운트된 라이프 사이클 후크의 $on 메소드를 사용하여 "sendData" 이벤트를 수신하고 응답 함수에서 컴포넌트 B의 receivedData 데이터를 업데이트합니다. 이 시점에서 컴포넌트 B는 컴포넌트 A로부터 전달된 데이터를 받을 수 있습니다.
부모가 아닌 구성 요소와 하위 구성 요소 간의 통신은 특수 이벤트 시스템을 사용하여 구현해야 합니다. 이렇게 하면 구성 요소 간에 인형이 무한하게 중첩되는 것을 방지하고 코드를 유지 관리하기 어렵게 만들 수 있습니다. 따라서 실제 개발에서는 구성 요소 간의 통신을 상위-하위 구성 요소로 제한하도록 노력해야 합니다.
위 내용은 Vue에서 관련 없는 구성요소에 매개변수를 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!