@ $mol_mem으로 장식된 메서드는 캐시된 반응형 셀입니다. 한 번 실행되어 결과를 기억하고, 읽었던 무언가가 바뀌었을 때만 다시 계산합니다.1namespace $.$${2export class $my_counterextends$.$my_counter{3@ $mol_memcount(){return 0}45@ $mol_memdoubled(){6return this.count()*27}8}9}doubled는 count를 읽으므로 자동으로 count를 구독합니다. count를 바꾸면 doubled를 보여 주는 모든 뷰가 새로 고쳐집니다——손으로 구독할 것은 아무것도 없습니다.
이 한 가지 구분이 반응형 코드를 예측 가능하게 유지합니다.@ $mol_mem은 순수 계산입니다——다른 셀을 읽고 값을 반환할 뿐입니다.@ $mol_action은 이펙트입니다——상태 쓰기, 네트워크 호출, 타이머가 여기에 속합니다.@ $mol_mem 내부에서 셀에 쓰면 피드백 루프가 생깁니다(쓰기가 의존성을 무효화하고, 다시 계산되고, 또 씁니다). $mol은 이를 순환 구독으로 보고합니다. 해결책은 언제나 같습니다. 부수 효과는 액션에 두고, 계산은 순수하게 유지하세요.@ $mol_mem에서 할 수 있는 것하면 안 되는 것버튼 핸들러는 기반 클래스에서 @ $mol_mem으로 생성됩니다. 안전하게 쓸 수 있도록 @ $mol_action으로 재정의하세요.1@ $mol_action2submit(){3this.saved(true)4}
의존성이 자동으로 추적되므로, 파생 값은 어떤 배선도 없이 연쇄됩니다. 각각은 바로 앞의 것을 읽고, 뿌리에서의 변화는 필요한 만큼만 정확히 퍼져 나갑니다.1@ $mol_memfull_name(){2return `${ this.first() } ${ this.last() }`.trim()3}45@ $mol_memgreeting(){6return this.full_name()?`Hello, ${ this.full_name() }!`:'Hello!'7}GitHub에서 이 페이지 편집도움이 되었나요?예아니요이전뷰다음라우팅이 페이지에서반응형 속성읽기와 쓰기액션 대 계산파생 상태는 조합된다키가 있는 상태비동기는 그저 하나의 값이벤트 사이의 일시적 상태다음Type to search the documentation.