Vue의 Prop은 함수를 전달할 수 있으며, 문자열, 배열, 숫자 및 객체는 Vue에서 Prop으로 전달될 수 있습니다. Prop은 주로 외부에서 전달된 데이터를 수신하는 데 사용됩니다. 구문은 "기본값 내보내기 {메서드: {myFunction() {// ...}}};"입니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, Vue3 버전, Dell G3 컴퓨터.
Vue 초보자들이 자주 묻는 질문입니다. 문자열, 배열, 숫자, 객체는 props
로 전달될 수 있습니다. 그런데 함수를 props
로 전달할 수 있나요? props
传递。但是你能把一个函数当作一个props
来传递吗?
虽然可以将函数作为props
props
로 전달하는 것은 가능하지만 좋지 않습니다. 반대로 Vue에는 이 문제를 해결하기 위해 특별히 설계된 기능이 있습니다. 다음으로 살펴보겠습니다. <template> <ChildComponent :function="myFunction" /> </template> export default { methods: { myFunction() { // ... } } };앞서 말했듯이 Vue에서는 절대로 이와 같은 작업을 수행해서는 안 됩니다. 왜? Vue에는 더 나은 것이 있습니다.
// ChildComponent export default { created() { this.$emit('created'); } }상위 구성 요소에서 이벤트를 수신합니다.
<template> <ChildComponent @created="handleCreate" /> </template> export default { methods: { handleCreate() { console.log('Child has been created.'); } } };이벤트로 할 수 있는 일이 더 많지만 이는 단지 모피에 불과합니다. 이에 대해 자세히 알아보려면 공식 Vue 문서를 확인하는 것이 좋습니다. 확실히 읽어 볼 가치가 있습니다. 그러나 이벤트가 우리의 모든 문제를 완전히 해결할 수는 없습니다.
「부모 클래스에서 값 가져오기」
자식 컴포넌트가 부모 컴포넌트의 메서드에 액세스하도록 하려면 해당 메서드를 prop으로 직접 전달하는 것이 간단하고 간단해 보입니다. 상위 구성 요소에서는 다음을 수행합니다.<!-- Parent --> <template> <ChildComponent :method="parentMethod" /> </template> // Parent export default { methods: { parentMethod() { // ... } } }자식 구성 요소에서는 전달된 메서드를 사용합니다.
// Child export default { props: { method: { type: Function }, }, mounted() { // Use the parent function directly here this.method(); } }이 작업을 수행하면 무엇이 문제가 될까요? 완전히 틀린 말은 아니지만 이런 경우에는 이벤트를 활용하는 것이 좋을 것 같습니다. 그런 다음 필요할 때 하위 구성 요소는 함수를 호출하지 않고 이벤트만 발생시킵니다. 그런 다음 상위 구성 요소는 이벤트를 수신하고 함수를 호출하며 어셈블리는 하위 구성 요소에 전달된 소품을 업데이트합니다. 이것이 동일한 효과를 얻는 더 좋은 방법입니다. 다른 경우에는 하위 요소의 값을 상위 요소로 가져오고 싶을 수 있으며 이를 위해 함수를 사용합니다. 예를 들어 이런 일을 하고 있을 수도 있습니다. 상위 함수는 하위 함수의 값을 받아 처리합니다.
<!-- Parent --> <template> <ChildComponent :method="parentMethod" /> </template> // Parent export default { methods: { parentMethod(valueFromChild) { // Do something with the value console.log('From the child:', valueFromChild); } } }하위 구성 요소에 전달된 메서드를 호출하고 하위 구성 요소의 값을 메서드의 매개 변수로 전달합니다.
// Child export default { props: { method: { type: Function }, }, data() { return { value: 'I am the child.' }; }, mounted() { // Pass a value to the parent through the function this.method(this.value); } }이는 완전히 틀린 것은 아닙니다. 이렇게 하면 가능합니다. Vue에서 수행하는 가장 좋은 방법은 아닙니다. 대신 이벤트가 문제 해결에 더 적합합니다. 이벤트를 사용하면 똑같은 결과를 얻을 수 있습니다.
<!-- Parent --> <template> <ChildComponent @send-message="handleSendMessage" /> </template> // Parent export default { methods: { handleSendMessage(event, value) { // Our event handler gets the event, as well as any // arguments the child passes to the event console.log('From the child:', value); } } }자식 구성 요소에서는 이벤트를 발생시킵니다.
// Child export default { props: { method: { type: Function }, }, data() { return { value: 'I am the child.' }; }, mounted() { // Instead of calling the method we emit an event this.$emit('send-message', this.value); } }이벤트는 Vue에서 매우 유용하지만 문제를 100% 해결하지는 않습니다. 때로는 다른 방식으로 부모로부터 자식 범위에 액세스해야 하는 경우도 있습니다. 이를 위해 우리는 범위가 지정된 슬롯을 사용합니다!
【관련 추천: "vue.js tutorial"】
위 내용은 props가 vue에서 함수를 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!