Vue에서 계산이란 종속성을 기반으로 캐시된 계산인 "계산된 속성"을 의미하며 관련 종속성이 변경될 때만 업데이트됩니다. 계산된 속성이 의존하는 속성이 변경되는 한 계산된 속성은 다시 실행되고 뷰가 업데이트됩니다. 계산된 속성의 결과는 캐시되며 종속 반응 속성이 변경되지 않는 한 다시 계산되지 않습니다.
이 튜토리얼의 운영 환경: windows7 시스템, vue3 버전, DELL G3 컴퓨터.
computed 정의
Computed는 vue의 계산된 속성입니다. 종속성에 기반한 캐시된 계산입니다. 관련 종속성이 변경될 때만 업데이트됩니다.
computed Usage
일반적으로 계산된 속성은 기본적으로 사용됩니다.
computed의 반응형 종속성(캐싱)
1. 계산된 각 계산 속성이 변경에 따라 달라지는 한 계산 속성이 다시 실행되고 뷰가 갱신됩니다. . 아래 코드에서 계산된 속성 fullName은 두 속성 firstName 및 lastName에 따라 달라집니다. 해당 속성 중 하나가 변경되면 fullName이 다시 실행됩니다.
2. 계산된 속성이 캐시됩니다. 다음 코드에서는 fullName이 두 번 사용되지만 "this is fullName"은 콘솔에 한 번만 출력됩니다.
<template> <div> <div> 姓:<input> </div> <div> 名:<input> </div> <!-- 调用两次fullName --> <div>姓名:{{ fullName }}</div> <div>姓名:{{ fullName }}</div> </div> </template> <script> export default { data() { return { firstName: "张", lastName: "三", }; }, computed: { fullName() { console.log("这是fullName"); return this.firstName + this.lastName; } } }; </script>
Computed의 작동 방식
Computed의 작동 방식을 이해하려면 다음 세 가지 질문만 이해하면 됩니다.
1. Computed도 반응형입니다
2. Computed가 캐싱을 제어하는 방식
3. How to update Computed
원리(현지어로):
Responsiveness of Computed
응답성이 무엇인지, 구독자 감시자가 무엇인지 잘 모르시나요? 먼저 Vue 응답성의 원리를 이해할 수 있습니다.
간단히 말하면:
computed에 대해 설정한 get 및 set 함수는 Object.defineProperty와 연결됩니다.
그래서 Vue는 계산된 작업을 모니터링, 캡처, 읽고 할당할 수 있습니다.
computed를 읽으면 set get 함수가 실행되지만, 캐시 연산의 레이어도 있기 때문에 그렇게 간단하지는 않습니다. 데이터가 오염되지 않고 더티 데이터가 아닌 경우 get 함수를 실행하지 않고 캐시에서 직접 값을 가져옵니다. (더티 데이터가 무엇인지는 나중에 다루겠습니다.)
computed를 할당하면 set set 기능이 실행됩니다. 이는 비교적 간단하며 설정된 값을 Object.defineProperty - set에 직접 할당합니다.
Computed의 캐시를 제어하는 방법
Computed에 캐시가 있다는 것은 모두가 알고 있으며 관계자가 이에 대해 설명했습니다.
계산된 속성의 결과는 캐시되며 종속 반응 속성이 변경되지 않는 한 다시 계산되지 않습니다. 종속성(예: 비반응형 속성)이 인스턴스 범위를 벗어나면 계산된 속성이 업데이트되지 않습니다.
왜 캐싱이 필요한가요? 거대한 배열을 탐색하고 많은 계산을 수행해야 하는 값비싼 계산 속성 A가 있다고 가정해 보겠습니다. 그러면 A에 의존하는 다른 계산된 속성이 있을 수 있습니다. 캐싱이 없으면 필연적으로 A의 get 함수를 여러 번 실행하게 됩니다. 많은 양의 계산으로 인해 JS 스레드가 점유되어 페이지 렌더링이 차단됩니다.
그렇다면 Vue에서 계산은 캐시 사용 여부를 어떻게 결정합니까?
먼저 계산이 끝나면 계산된 값이 변수(watcher.value)에 저장됩니다. 계산된 내용을 읽고 캐시를 사용할 때 이 변수가 직접 반환됩니다. 계산이 업데이트되면 이 변수가 다시 할당되고 업데이트됩니다.
TIP: 계산 계산은 설정한 get 함수를 호출한 다음 반환 값을 가져오는 것입니다.
계산된 제어 캐시의 중요한 점은 [더티 데이터 플래그 더티] 더티는 감시자의 속성입니다.
dirty가 true인 경우 계산된 내용을 읽으면 get 기능이 실행되어 다시 계산됩니다.
dirty가 false인 경우 계산된 읽기는 캐시를 사용합니다.
캐싱 메커니즘에 대한 간략한 설명
각 계산이 자체 감시자를 생성할 때 watcher.dirty = true로 설정되므로 계산이 사용될 때 값이 계산됩니다
종속 데이터가 변경되어 계산되었음을 알리면 watcher.dirty = true가 지정됩니다. 계산을 다시 읽으면 get 함수가 실행되어 다시 계산됩니다.
계산이 완료된 후 watcher.dirty = false가 설정되어 다른 곳에서 다시 읽을 때 계산을 피하기 위해 캐시를 사용하게 됩니다.
종속 데이터가 변경될 때 계산을 업데이트하는 방법은 무엇입니까?
Vue 응답성 원칙을 간략하게 설명합니다.
계산의 본질은 데이터와 유사합니다. 사용되면 구독자 감시자가 생성되어 종속성 컬렉션으로 전달됩니다. 예를 들어 A가 B를 참조하면 B는 A의 감시자를 수집합니다.
Scene 설정
이제 페이지 A는 계산된 B를 참조하고 계산된 B는 데이터 C에 따라 달라집니다.
이렇게 종속성 순서는 A->B->C입니다.
그렇다면 데이터 C가 변경되면 어떻게 될까요?
이런가요?
계산된 B에 업데이트를 알리고, 계산된 B가 다시 계산되기 시작합니다.
그런 다음 계산된 B는 페이지 A에 업데이트를 알리고 계산된 내용을 다시 읽습니다.
체인점 운영? C -> B -> A 이것이 실행 순서인가요?
답은 '아니오'입니다.
실제로 실제 프로세스는 데이터 C가 변경되기 시작한 후...
계산된 B의 감시자에게 업데이트를 알리고 더티 데이터 플래그 비트 dirty =true만 재설정하고 값.
페이지 A 감시자에게 업데이트 및 렌더링을 알리고 계산된 B를 다시 읽은 다음 계산된 B가 다시 계산을 시작합니다.
데이터 C가 페이지 A에 알릴 수 있는 이유는 무엇인가요?
데이터 C의 종속성 수집기는 계산된 B와 페이지 A의 감시자를 동시에 수집합니다.
데이터 C가 페이지 A의 감시자를 수집할 수 있는 이유는 무엇입니까?
페이지 A가 계산된 B를 읽을 때 페이지 A의 감시자를 데이터 C에 제공할 기회가 있으므로 페이지 A의 감시자와 데이터 C는 간접적으로 관련된 데이터 C는 페이지 A 감시자를 수집합니다.
구체적인 코드가 어떻게 구현되는지는 아래 소스코드 분석에서 설명하겠습니다.
그렇다면 어떻게 계산을 업데이트하나요?
종속성 알림에 의해 업데이트된 후 더티 데이터 플래그가 재설정되고 페이지가 계산된 값을 읽을 때 값이 업데이트됩니다.
Vernacular summary
computed는 watcher.dirty를 통해 캐시를 읽을지 여부를 제어합니다.
computed는 [데이터 종속성]이 [computed에 의존하는 감시자]를 수집하도록 하므로 데이터가 변경되면 계산된 위치와 계산된 위치에 동시에 알림이 전달됩니다.
【추천 관련 동영상 튜토리얼: vuejs 입문 튜토리얼, 웹 프론트엔드 시작하기】
위 내용은 vue에서 계산이란 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Tonavigatereact'scomplexecosystemectically, worldsandlibraries, endegeirstrengthsandweaknesses, andintegrateTheMtoEnhancedEvelopment.StartWithCorereaCtConceptSandusestate, gragratevallystecorecomplexSolutionsormerObxasnee

ReactuseskeyStoefficificificificientifyListItemsByProvingableIdentityToeachelement.1) KeysLACKERACERACTTOTRACKCHANGENLISTSWITHOUTRE-RENDERINGENTIRELIST.2) 선택 ARRAYINDICES.3) 교정 keyUsagesSENTIFORYLATIONTIMPROFFERCANC

KeysinReactareCrucialforopiTizingProcess 및 ManingDynamicListSeffecticaly.tospotandfixkey-RelatedIssues : 1) addUniqueKeyStolistemStoavoidwarningsandperformanceIssues, 2) indainiqueIdentifiers, 3) 보장

React의 일원 데이터 바인딩은 데이터가 모성 구성 요소에서 자식 구성 요소로 흐르는 것을 보장합니다. 1) 데이터는 단일로 흐르고 부모 구성 요소의 상태의 변경 사항은 하위 구성 요소로 전달 될 수 있지만, 하위 구성 요소는 부모 구성 요소의 상태에 직접 영향을 줄 수 없습니다. 2)이 방법은 데이터 흐름의 예측 가능성을 향상시키고 디버깅 및 테스트를 단순화합니다. 3) 제어 된 구성 요소 및 컨텍스트를 사용하여 일방 통행 데이터 스트림을 유지하면서 사용자 상호 작용 및 구성 요소 통신을 처리 할 수 있습니다.

KeysinReactarecrucialforforforforforficient DomesandReciliation.1) 선택 가능한, 독특하고, 평범한 경비, 같은 시설, 2) fornestedlists, useUniqueysateachlevel.3) 피할 수 없음.

usestate () iscrucialforoptimizingReactAppPerformancedUeToitSumneR-RendersandUpdates.tooptimize : 1) useeCallBackTomeMoizeFunctionsandPreventUncessaryre-renders.2) EmployEsemEmeMoforCachingExpensiveComputations.3) BreakStateSmarloBlesmormormormormor

컨텍스트와 usestate를 사용하여 대규모 React 응용 프로그램에서 상태 관리를 단순화 할 수 있으므로 상태를 공유하십시오. 1) 프로포 드릴링을 줄이기, 2) 명확한 코드, 3) 글로벌 상태를 쉽게 관리 할 수 있습니다. 그러나 성능 오버 헤드 및 복잡성을 디버깅하는 데주의를 기울이십시오. 컨텍스트 및 최적화 기술의 합리적인 사용은 응용 프로그램의 효율성과 유지 가능성을 향상시킬 수 있습니다.

잘못된 키를 사용하면 React Applications에서 성능 문제와 예기치 않은 동작이 발생할 수 있습니다. 1) 키는 목록 항목의 고유 식별자로 가상 DOM을 효율적으로 업데이트하는 데 도움이됩니다. 2) 동일하거나 비 유니 키 키를 사용하면 목록 항목이 재정렬되고 구성 요소 상태가 손실됩니다. 3) 안정적이고 고유 한 식별자를 키로 사용하면 성능을 최적화하고 전체 재 렌더링을 피할 수 있습니다. 4) eslint와 같은 도구를 사용하여 키의 정확성을 확인하십시오. 키를 올바르게 사용하면 효율적이고 안정적인 반응 응용 프로그램이 보장됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
