vuex에서 이상한 게터.누가 나에게 이 행동을 설명해 줄 수 있습니까?
네, 저는 js에서 많은 것들이 불가능하거나 이상하게 보인다는 것을 압니다.하지만 왜 수백만 개의 ppl을 사용하는 제품에 그것들을 구현합니까?
여기에 우리는 입문자 기능이 있습니다.
export const isAuthenticated = state => (
state.auth !== null &&
state.auth.access_token !== null &&
new Date(state.auth.access_token_expiration) > new Date()
);
그래서 만약 이것이 함수라면 우리는 괄호와 1개의 인수로 그것을 불러야 합니다.getters.isAuthenticated(state)
그러나 이것은 입문자들의 경우가 아닙니다.getters.isAuthenticated
괄호도, 인수도 없습니다. 속성과 동일하지만 함수 호출입니다.그리고 우리가 이렇게 하면,getters.isAuthenticated(arg)
그러면 우리의 기능은 다음과 같이 보일 것입니다.(state)=>(arg)=>{}
.왜 그런 것일까요?
사실 여기 적혀있는 것처럼 getter를 함수로 사용할 수 있습니다.이것이 당신이 보는 이유입니다.(state)=>(arg)=>{}
게터는 비슷합니다.computed
일반 자바스크립트 게터인 속성.이 간단한 예에서 콘솔을 확인하십시오.인스턴스로 설정된 다음과 같은 소품을 볼 수 있습니다.
이것들은 기본적인 JS getter 기능들이고, 이상한 것은 없습니다.자세한 내용은 이 MDN 참조를 참조하십시오.이것이 도움이 되길 바라며, Vue를 재미있게 배우세요.
이는 고차 함수의 변형으로, 함수(상태 매개변수 포함)가 호출될 때 함수를 호출하고 자체 컨텍스트에서 상태 매개변수를 제공하는 다른 함수(파라미터 없음)로 대체됩니다.
여기 소스 코드에서 303행과 425행의 래퍼 코드를 단순화했습니다.
module.forEachGetter((rawGetter, key) => {
store._wrappedGetters[key] = function wrappedGetter (store) {
return rawGetter(
local.state, // local state
local.getters, // local getters
store.state, // root state
store.getters // root getters
)
}
})
233행에서 당신은 javascript getters로 store.geters 속성에 추가되고 store 매개 변수와 함께 제공되는 lappedGeters를 볼 수 있습니다.게터가 가치 캐싱의 이점을 활용하기 위해 계산된 속성으로 추가되기 때문에 이 또한 단순화됩니다.
forEachValue(wrappedGetters, (fn, key) => {
Object.defineProperty(store.getters, key, {
get: () => fn(store),
enumerable: true // for local getters
})
})
언급URL : https://stackoverflow.com/questions/53610580/weird-getters-from-vuex-can-someone-explain-to-me-this-behavior
'programing' 카테고리의 다른 글
Android getResources().getDrawable()이 더 이상 사용되지 않는 API 22 (0) | 2023.06.16 |
---|---|
하나의 Postgre에서 여러 WITH 문을 사용하는 방법SQL 쿼리? (0) | 2023.06.16 |
SQL에서 동일한 쿼리에 여러 뷰를 만든 다음 이 뷰를 결합하려면 어떻게 해야 합니까? (0) | 2023.06.16 |
공용 VAPID 키를 찾을 수 있는 Firebase 클라우드 메시징 (0) | 2023.06.16 |
UIViewContentModeScaleAspectFill이 클리핑되지 않음 (0) | 2023.06.16 |