VUE 종 methods watch 와 compute 의 차이 점 과 관 계 를 이야기 합 니 다.
사진 제목[오리지널]:<그 세 사람 은 무슨 사이 일 까?>
우선 methods,watch,coptute d 는 함 수 를 바탕 으로 하지만 각각 다르다.
그리고 역할 체제 와 성격 을 보면 methods 와 watch/coputed 가 다 르 기 때문에 제 다음 소 개 는 주로 두 가지 비교 가 있 습 니 다.
1.methods 와(watch/computed)의 대비
2.watch 와 computed 의 대비
작용 메커니즘 상
1.watch 와 coptute d 는 모두 Vue 의 의존 추적 체 제 를 바탕 으로 이런 일 을 처리 하려 고 한다.특정한 데이터(데이터 의존 이 라 고 함)가 변화 할 때 이 데이터 에 의존 하 는 모든'관련'데이터'자동'이 변화 하고 관련 함수 가 자동 으로 호출 되 어 데이터 의 변동 을 실현 하 는 것 이다.
2.methods:methods 에 함 수 를 정의 하 는 데 사 용 됩 니 다.수 동 으로 호출 해 야 실행 할 수 있 음 이 분명 합 니 다.watch 와 computed 처럼'자동 실행'이 미리 정 의 된 함수 가 아 닙 니 다.
【총 결]:methods 에서 정 의 된 함 수 는 주동 적 으로 호출 되 어야 하 며,watch 와 coptute d 와 관련 된 함 수 는 자동 으로 호출 되 어 우리 가 원 하 는 역할 을 완성 합 니 다.
성질 상 으로 보다
1.methods 에서 정 의 된 것 은 함수 입 니 다."fuc()"처럼 호출 해 야 합 니 다.(함수 가 fuc 라 고 가정 합 니 다)
2.coptute d 는 계산 속성 으로 사실상 data 대상 의 데이터 속성 과 같은 종류(사용 상)입 니 다.
예 를 들 면:
computed:{
fullName: function () { return this.firstName + lastName }
}
사용 할 때 this.fullName 으로 데 이 터 를 가 져 오 는 것 과 같 습 니 다.(함수 로 호출 하지 마 세 요!)3.watch:감청 메커니즘+이벤트 메커니즘 과 유사 합 니 다.
예 를 들 면:
watch: {
firstName: function (val) { this.fullName = val + this.lastName }
}
firstName 의 변 화 는 이 특수 한"이벤트"가 촉발 되 는 조건 이 며,firstName 에 대응 하 는 함 수 는 이벤트 가 발생 한 후 실행 되 는 방법 을 감청 하 는 것 과 같 습 니 다.watch 와 computed 의 대비
이렇게 많아
우선 그들 은 모두 Vue 의 의존 추적 체 제 를 바탕 으로 하 는데 이들 의 공통점 은 모두 데이터 에 의존 하여 변화 가 발생 할 때 의존 하 는 데 이 터 는 미리 정 의 된 함수 에 따라'자동'의 변화 가 발생 하 기 를 바 라 는 것 이다.
우 리 는 당연히 스스로 코드 를 써 서 이 모든 것 을 완성 할 수 있 지만,쓰기 가 혼 란 스 럽 고 코드 가 불필요 한 상황 을 초래 할 수 있다.Vue 는 우리 에 게 이러한 편리 한 인 터 페 이 스 를 제공 하고 규칙 을 통일 시 켰 다.
그러나 watch 와 computed 도 뚜렷하게 다른 점 이 있다.
watch 와 coptute d 가 각각 처리 하 는 데이터 관계 장면 이 다 릅 니 다.
1.watch 가 잘 처리 하 는 장면:한 데이터 가 여러 데이터 에 영향 을 미친다.
2.coptute 가 잘 처리 하 는 장면:한 데이터 가 여러 데이터 의 영향 을 받는다.
watch 가 잘 처리 하 는 장면:한 데이터 가 여러 데이터 에 영향 을 줍 니 다.
(구체 적 으로 위의 그림 을 보면 ok,여 기 는 더 이상 군말 하지 않 겠 습 니 다)
watch 에 대해 서 는 한 장면 부터 말씀 드 리 겠 습 니 다.
'해적 왕'에서 주인공 팀 의 이름 은'밀짚모자 해적 단'이다.
그래서 우 리 는 선원 들 을 순서대로 불 렀 다.
밀짚모자 해적 단 솔 론,밀짚모자 해적 단 나 미 를 유추 해 보면...
우 리 는 선단 의 명칭 이 변경 되 었 을 때 이 배의 모든 선원 의 이름 이 함께 변경 되 기 를 바 랍 니 다!!
예 를 들 면:
어느 날 선장 루피 는 팀 건설 을 강화 하고 해적 문 화 를 선양 하기 위해'밀짚모자 해적 단'을'고무 해적 단'(루피 는 고무 악마의 열매 능력 자)으로 개명 하기 로 했다.
저희 코드 는 다음 과 같 습 니 다.
var vm = new Vue({
el: '#app',
/*
data :
1.haiZeiTuan_Name -->
2. = ( ) + ( )
:
( ) --> --> (1 )
--->
*/
data: {
haiZeiTuan_Name: ' ',
suoLong: ' ',
naMei: ' ',
xiangJiShi: ' '
},
/*
watch , haiZeiTuan_Name( )
data (suoLong,naMei,xiangJiShi)
*/
watch: {
haiZeiTuan_Name: function (newName) {
this.suoLong = newName + ' '
this.naMei = newName + ' '
this.xiangJiShi = newName + ' '
console.log(this.suoLong)
console.log(this.naMei)
console.log(this.xiangJiShi)
}
}
})
// watch
vm.haiZeiTuan_Name = ' '
demo:그래서 선원 들 의 칭호 접 두 사 는 모두 통일 적 으로 수정 되 었 다!("밀짚모자 해적 단"이 었 는데)
하지만 우리 길 비 선장 은 내 가 고 기 를 이렇게 좋아 하 는데 차라리'고기 해적 단'이 라 고 불 러 야 겠 다 는 생각 이 들 었 다.
우 리 는 맨 아래 의 코드 를 다음 과 같이 바 꾸 었 다.
// watch
vm.haiZeiTuan_Name = ' '
demo:컴퓨터 가 잘 처리 하 는 장면:한 데이터 가 여러 데이터 의 영향 을 받는다.
우리 한 장면 부터 얘 기 하 자.
로 비의 전체 이름 은 몽 키-D-로 비 였 다.그 는 해적 왕 이 되 고 싶 었 지만 로 비의 할아버지 카 프(해군 영웅)는 화가 나 서'로 비'를'해군 왕'으로 바 꾸 었 다.그 가 뜻 을 바 꾸 기 를 바 랐 다.
코드 는 다음 과 같 습 니 다:
var vm = new Vue({
el: '#app',
/*
data :firstName,secName,thirdName
computed :lufei_Name
: lufei_Name = firstName + secName + thirdName
, lufei_Name
*/
data: {
// : ・D・
firstName: ' ',
secName: 'D',
thirdName: ' '
},
computed: {
luFei_Name: function () {
return this.firstName + this.secName + this.thirdName
}
}
})
// “ ” “ ”
vm.thirdName = ' '
//
console.log(vm.luFei_Name)
demo:하지만:
어느 날,루피 의 놀 리 는 할아버지 카 프 는 실수 로 족 보 를 잘못 알 았 을 수도 있다 는 것 을 알 게 되 었 다.실제로 그들 은'D'의 일족 이 아니 라'H'족 이 었 다.즉,'몽 키-D-루피'를'몽 키-H-루피'라 고 부 를 수도 있다.
마지막 코드 를 다음 과 같이 변경 합 니 다.
// “D” “H”
vm.secName = 'H'
//
console.log(vm.luFei_Name)
demo:methods 는 데이터 논리 관 계 를 처리 하지 않 고 호출 가능 한 함수 만 제공 합 니 다.
watch/computed 에 비해 methods 는 데이터 논리 관 계 를 처리 하지 않 고 호출 가능 한 함수 만 제공 합 니 다.
new Vue({
el: '#app',
template: '<div id="app"><p>{{ say() }}</p></div>',
methods: {
say: function () {
return ' '
}
}
})
기능 의 상호 보완 적 인 측면 에서 methods,watch 와 computed 의 관 계 를 보다.
coptute d 는 watch 와 methods 를 사용 할 때 처리 할 수 없 거나 적절 하지 않 은 상황 을 처리 하 는 경우 가 많 습 니 다.
computed 처리 methods 에 존재 하 는 중복 계산 상황 을 이용 합 니 다.
1.methods 안의 함 수 는 바로'강직 한 소년'입 니 다.다른 부모 함수 가 호출 되면 매번'순 순 히'실행 하고 결 과 를 되 돌려 줍 니 다.설령 이 결과 가 같 을 수 있 더 라 도 필요 하지 않 습 니 다.
2.computed 는'심기 Boy'로 Vue 가 제공 하 는 의존 추적 시스템 을 바탕 으로 데이터 에 의존 하여 변화 가 없 으 면 computed 는 다시 계산 하지 않 습 니 다.
예:
new Vue({
el: '#app',
// button, getMethodsDate,getComputedDate
template: '<div id="app"><button @click="getMethodsDate">methods</button><button @click="getComputedDate">computed</button></div>',
methods: {
getMethodsDate: function () {
alert(new Date())
},
// computed ――computedDate
getComputedDate: function () {
alert(this.computedDate)
}
},
computed: {
computedDate: function () {
return new Date()
}
}
methods 버튼 을 처음 클릭:두 번 째 methods 버튼 클릭:
methods 를 두 번 클릭 하면 돌아 오 는 시간 이 다 릅 니 다!!
처음으로 computed 단 추 를 눌 렀 습 니 다:
두 번 째 컴퓨터 버튼 클릭:
컴퓨터 를 두 번 클릭 하고 돌아 오 는 시간 이 같 음 을 주의 하 세 요!!
1.methods 를 두 번 클릭 하면 돌아 오 는 시간 이 다 릅 니 다.
2.컴퓨터 를 두 번 누 르 면 돌아 오 는 시간 이 같 음 을 주의 하 세 요.
【주의]왜 컴퓨터 를 두 번 눌 러 서 돌아 오 는 시간 이 같 지?new Date()는 의존 형 데이터(data 등 대상 에 놓 인 인 인 스 턴 스 데이터 가 아 닌)가 아니 기 때문에 coptute d 는 캐 시 값 만 제공 하고 다시 계산 하지 않 습 니 다.
1.의존 형 데이터 가 존재 합 니 다.2.의존 형 데이터 가 이 두 가지 조건 을 바 꿔 야 coptute d 가 다시 계산 할 수 있 습 니 다.
methods 의 데 이 터 는 매번 계산 합 니 다.
coptute d 를 이용 하여 watch 가 특정 상황 에서 코드 가 불필요 한 현상 을 처리 하고 코드 를 간소화 합 니 다.
new Vue({
el: '#app',
data: {
fullName: ' ',
firstName: ' ',
secName: ' ',
thirdName: ' '
},
// watch , , ,
watch: {
firstName: function (newValue) {
this.fullName = newValue + this.secName + this.thirdName
console.log(this.fullName)
},
secName: function (newValue) {
this.fullName = this.firstName + newValue + this.thirdName
console.log(this.fullName)
},
thirdName: function (newValue) {
this.fullName = this.firstName + this.secName + newValue
console.log(this.fullName)
}
}
})
watch 의 코드 는 분명히 같은 유형 이 고 중복 되 며 간결 하지 도 않 고 우아 하지 도 않 기 때문에 우 리 는 그것 을 이렇게 만 들 수 있다.
new Vue({
el: '#app',
data: {
fullName: ' ',
firstName: ' ',
secName: ' ',
thirdName: ' '
},
// watch ,
computed: function () {
this.fullName = this.firstName + this.secName + this.thirdName
console.log(this.fullName)
}
})
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.