Vue.js 의 계산 속성,감시 속성 과 생명주기 상세 설명

머리말
이 장 에서 Vue 에서 매우 중요 한 계산 속성,감시 속성 과 생명 주 기 를 말 해 보 겠 습 니 다.쓸데없는 말 없 이 바로 건어물 에 올 립 니 다.
계산 속성
계산 속성 소개
템 플 릿 에서 플러그 인 문법 을 통 해 data 의 데 이 터 를 직접 표시 할 수 있 습 니 다.어떤 경우 에 우 리 는 데 이 터 를 전환 하거나 계산 한 후에 표시 해 야 합 니 다.우 리 는 coptute d 옵션 을 사용 하여 계산 할 수 있 습 니 다.이때 일부 동료 들 은 제 가 함 수 를 직접 정의 하고 다시 사용 하면 되 지 않 습 니까?왜 하나의 계산 속성 을 완성 해 야 합 니까?라 고 물 을 수 있 습 니 다.이 문 제 는 아래 에서 다시 설명 하 겠 습 니 다.우 리 는 먼저 계산 속성 을 어떻게 사용 하 는 지 봅 시다!
입문 사례
수요
사람의 성과 이름 을 한데 잇다
코드

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<!--        -->
			<p>{{fastName}} {{lastName}}</p>
			<!--            -->
			<p>{{fastName + " " + lastName}}</p>
			<!--        -->
			<p v-text="fullName2()"></p>
			<!--          -->
			<p>{{fullName1}}</p>
		</div>
	</body>
	<script type="text/javascript">
		var app = new Vue({
			el: "#app",
			data: {
				fastName: "Tracy",
				lastName: "McGrady"
			},
			computed: {
				fullName1: function(){
					return this.fastName + " " + this.lastName
				}
			},
			methods: {
				fullName2: function(){
					return this.fastName + " " + this.lastName
				}
			}
			
		})
	</script>
</html>
효과.

통계 가격 사례
코드

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<p>{{totalPrice}}</p>
		</div>
	</body>
	<script type="text/javascript">
		var app = new Vue({
			el: "#app",
			data: {
				bookes: [
					{id: 100,name: 'Unix    ',price: 119},
					{id: 200,name: 'Java    ',price: 105},
					{id: 300,name: '     ',price: 98},
					{id: 400,name: 'Spring5',price: 99},
				]
			},
			computed: {
				totalPrice: function(){
					let result = 0;
					//     
					/* for(let i = 0;i < this.bookes.length;i++){
						result += this.bookes[i].price;
					} */
					
					//   for  ,i   
					/* for(let i in this.bookes){
						result += this.bookes[i].price;
					} */
					// ES6  for        
					for(let book of this.bookes){
						result += book.price
					}
					return result;
				}
			}
		})
	</script>
</html>
getter 와 setter 방법
소개 하 다.
속성 을 계산 하 는 전체 쓰기 방법 은 getter 와 setter 방법 을 포함 하여 fullName 대상 을 설명 합 니 다.우 리 는 보통 값 만 얻 기 때문에 위의 사례 로 생략 합 니 다.우 리 는 데 이 터 를 얻 을 때 get 방법 을 호출 하고 데 이 터 를 설정 할 때 set 방법 을 사용 합 니 다.
코드

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<p>{{fullName}}</p>
		</div>
	</body>
	<script type="text/javascript">
		var app = new Vue({
			el: "#app",
			data: {
				firstName: "Tracy",
				lastName: "McGrady"
			},
			//     
			computed: {
				//     
				fullName:{
					//     
					set: function(){
						console.log('---');
					},
					//     
					get: function(){
						return this.firstName + " " + this.lastName;
					}
				}
			}
		})
	</script>
</html>
계산 속성 캐 시
위의 methods 와 coptute d 의 차이 점 에 대한 질문 에 답 하 겠 습 니 다.아래 코드 는 각각 플러그 인 문법,methods,계산 속성 을 사용 하여 데이터 렌 더 링 을 합 니 다.
코드

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<!--     ,              ,      -->
			<p>  :{{name}}   :{{job}}</p>
			<!-- methods  ,               -->
			<p>{{getInfo1()}}</p>
			<p>{{getInfo1()}}</p>
			<p>{{getInfo1()}}</p>
			<p>{{getInfo1()}}</p>
			<!-- computed  ,          ,     ,         -->
			<p>{{getInfo2}}</p>
			<p>{{getInfo2}}</p>
			<p>{{getInfo2}}</p>
			<p>{{getInfo2}}</p>
			<p>{{getInfo2}}</p>
		</div>
	</body>
	<script type="text/javascript">
		var app = new Vue({
			el: "#app",
			data: {
				name: "  ",
				job: "NBA  "
			},
			methods: {
				getInfo1: function(){
					console.log("methods");
					return "  :" + this.name + "  : " + this.job;
				}
			},
			computed: {
				getInfo2: function(){
					console.log("computed");
					return "  :" + this.name + "  : " + this.job;
				}
			}
		})
	</script>
</html>
도해

결론.
  • methods 와 coptute d 는 우리 의 기능 을 실현 할 수 있 을 것 같 습 니 다
  • 4.567917.계산 속성 은 캐 시 를 진행 합 니 다.여러 번 사용 하면 계산 속성 은 한 번 만 호출 됩 니 다.
    감시 속성
    개술
    저 희 는 watch 를 사용 하여 지정 한 데이터 의 변환 을 감청 하고 해당 하 는 논리 적 처리 데 이 터 를 호출 할 수 있 습 니 다.
    코드
    
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		<div id="app">
    			<input type="text" v-model="firstName" />
    			<input type="text" v-model="lastName" />
    			<input type="text" v-model="fullName" />
    		</div>
    	</body>
    	<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
    	<script type="text/javascript">
    		const app = new Vue({
    			el: "#app",
    			data: {
    				firstName: "A",
    				lastName: "B",
    				fullName: "AB"
    			},
    			//     
    			watch: {
    				firstName(value) {
    					this.fullName = value + this.lastName
    				},
    				lastName(value) {
    					this.fullName = this.firstName + value
    				}
    			}
    		})
    	</script>
    </html>
    
    총결산
    감청 속성 은 계산 속성 코드 보다 훨씬 많 습 니 다.계산 속성 은 데이터 만 계산 하면 되 고 감청 속성 은 모든 데이터 의 변 화 를 감청 해 야 합 니 다.
    Vue 수명 주기
    다음 그림 은 실례 적 인 생명주기 를 보 여 준다.너 는 즉시 모든 것 을 이해 할 필요 가 없 지만,너의 끊 임 없 는 학습 과 사용 에 따라,그것 의 참고 가 치 는 갈수 록 높 아 질 것 이다

    생명주기 는 크게 세 단계 초기 화 단계,갱신 단계,사망 단계 로 나 뉜 다
    초기 화 단계
    이 단 계 는 new Vue 인 스 턴 스 에서 호출 되 며 한 번 만 호출 됩 니 다.
    beforeCreate:생 성 전 호출 함수
    created:생 성 후 호출 함수
    이후 마 운 트 와 템 플 릿 렌 더 링 을 진행 합 니 다.
    beforeMount:마 운 트 하기 전에 엘 이 선택 한 탭 을 교체 합 니 다.
    mounted:마 운 트 완료,브 라 우 저 에 데이터 표시
    업데이트 단계
    데이터 가 변 할 때 이 단계 에 들 어가 면 이 단 계 는 자주 호출 된다.
    beforeUpdate:데이터 가 수정 되 었 을 때 터치 합 니 다.
    updated:가상 DOM 수정 후,즉 데이터 수정 후 호출
    사망 단계
    사망 단계 도 한 번 만 호출
    beforeDestroy:소각 하기 전에
    폐기
    예제 코드 는 다음 과 같다.
    
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    		
    	</head>
    	<body>
    		<div id="app">
    			<p v-show="isShow">{{message}}</p>
    			<p>{{isShow}}</p>
    			<button type="button" @click="destroyVM">      </button>
    		</div>
    	</body>
    	<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
    	<script type="text/javascript">
    		const app = new Vue({
    			el: "#app",
    			data: {
    				message: "    ",
    				isShow: true
    			},
    			
    			beforeCreate() {
    				console.log("beforeCreate");
    			},
    			
    			created() {
    				console.log("create");
    			},
    			
    			beforeMount() {
    				console.log("beforeMount");
    			},
    			
    			mounted() {
    				console.log("mounted");
    				//      
    				this.intervald = setInterval(()=>{
    					console.log("-------"+this.isShow);
    					this.isShow = !this.isShow;
    				},1000)
    			},
    			
    			beforeUpdate() {
    				console.log("beforeUpdate");
    			},
    			
    			updated() {
    				console.log("updated");
    			},
    			
    			beforeDestroy() {
    				console.log("beforeDestroy");
                    //      
    				clearInterval(this.intervald)
    			},
    			
    			destroyed() {
    				console.log("destroyed");
    			},
    			
    			methods: {
    				//   vm
    				destroyVM() {
    					//       
    					this.$destroy()
    				}
    			}
    		})
    	</script>
    </html>
    
    그림 은 다음 과 같 습 니 다.페이지 새로 고침 시 beforeCreate,created,beforeMount,mounted 를 순서대로 호출 합 니 다.타이머 가 수정 isShow 데 이 터 를 실행 할 때 beforeUpdate,update 를 여러 번 호출 하고 단 추 를 누 르 면 로그아웃 함 수 를 호출 합 니 다.beforeDestroy,destroyed 를 호출 합 니 다.
    전체적으로 말 하면 created,mounted,beforeDestroy 가 자주 사용 된다.
  • created,mounted:ajax 요청 발송,타이머 시작 등 비동기 작업
  • 4
  • beforeDestroy:마무리 작업 을 합 니 다.예 를 들 어 타이머 제거

  • 총결산
    Vue.js 에서 속성 을 계산 하고 속성 과 생명 주 기 를 감시 하 는 글 을 소개 합 니 다.더 많은 Vue 계산 속성,감시 속성 과 생명 주기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 지 켜 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기