Vue 구성 요소 통신 솔루션
3628 단어 vue.jsjavascript
우선, 우리는 통상적으로 데이터 전달, 구성 요소 통신 따위를 말하는데 나는 두 가지 장면으로 나눌 수 있다고 생각한다.
어떤 장면이든 Vue를 사용할 때 우리는 다음과 같은 5가지 선택을 통해 데이터 통신을 실현한다.
통신 시나리오 선택
우리가 통신 방안을 선택할 때, 예를 들어 목록 페이지가 어떻게 모든 항목의 id를 상세한 페이지에 전달하는지 확인할 때, 일반적으로 어떤 문제를 고려해야 합니까?당신은 직접 모든 세트가 vuex입니까, 아니면sessionStorage를 즐겨 사용합니까?
일반적으로 우리는 아래의 몇 가지 문제를 고려해야 한다.
먼저'페이지와 페이지 사이의 통신 장면'을 말하고, 먼저 위의 5가지 방안을 우리가 선택할 수 있는 것은 다음과 같다.
vuex, storage, URL queryString.
그리고 각 방안이 위의 세 가지 문제에 대해 잘 해결되었는지 분석해 보자. 비고: 페이지 통신 장면에서 실시간 응답을 요구하지 않는다. 다음 페이지가 실시간 응답이라고 해도 보이지 않기 때문에 주로'리셋'과'공유'를 본다.
vuex: 리셋 불가,storage 공유불가:url 공유불가:리셋 가능,공유 가능
이렇게 보면 url query String의 방식은'페이지 통신 장면'에서 가장 좋은 선택이지만 나는 여전히 의심이 있다.
그래서 우리는'urlquerystring'을'페이지와 페이지 통신 장면'의 통신 방안으로 선택할 수 있다.앞으로 너는 이렇게 쓸 수 있다.
예를 들어 목록 페이지를 상세 정보 페이지로 이동하려면 id를 가져가야 합니다
this.$router.push({
path: 'detail',
query: {
id
}
})
너의 URL은 항상 이렇게 생길 것이다.
https://abc.com/#/?id=123
비고: 만약 당신의 페이지를 새로 고치고 공유할 수 없다면 당신은 세 가지 방안을 마음대로 선택할 수 있습니다. 누구를 사랑하는지.
중점: URL query String 방식에서 해결할 수 없는 문제가 하나 있습니다.
, queryString , url :
order/?goods=xxx
, , url ( )
address-edit/
,
order/
so, URL query String을 잃어버렸어요.
나의 현재 해결 방안: 다중 입구가 존재하는 이런 페이지를 대상으로 반드시 그 페이지에 들어가는 첫 번째 시간에query String을 저장해야 한다.그리고 다음과 같이 판단한다.
if (// queryString) {
// use queryString
} else {
// use storage
}
그러나 이런 방식은 주소 편집 페이지에서 주문 페이지로 돌아갈 수 없다. 사용자가 이때 주문 페이지를 공유하면 공유된 물건이 틀릴 것이다.
이제'구성 요소와 구성 요소 간의 통신 장면'위의 5가지 방안을 살펴보겠습니다. vuex, 이벤트, props,storage를 선택할 수 있습니다.
먼저 리셋, 공유와 실시간 응답 vuex, 이벤트를 리셋할 수 없음, props는 리셋할 수 있음 공유storage를 공유할 수 없음 & 실시간.
설명: 왜 vuex가 여기에서 리셋을 할 수 없습니까? 사용한state의 값이 다른 페이지에서 설정된 것이지 init가 아닌 다른 페이지에서 설정된 것이기 때문에 리셋은 값을 잃어버립니다.왜 이벤트,props는 리셋을 방지하고 공유를 방지할 수 있습니까? 왜냐하면 이 두 가지 게임은 프로그램이 실행하면 효력이 발생하고 실시간으로 업데이트할 수 있기 때문입니다.storage가 저장할 때 사건이 하나 있었지만 너무 trick적이에요.
그래서 저희가 선택한 건 이벤트,props?
분석해 보세요.구성 요소 통신은 두 종류로 나눌 수 있는데, 부자, 동년배이다.
부자간은:부전자:props부전자:$emit(event)
이것이 바로'props down, 이벤트 up'이다.
그런데 사실 부전자:this.$refs.xxx 서브 상위:this.$parent.xxx
그리고: 사용자 정의 v-모델
그리고:props를 하나의 대상으로 만든다.
동년배 사이: 이벤트-bus.
그래서 이게 끝이야?아무것도 없어요?응, 이렇게.
사색
why? vuex , , . .
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[백견불여일타/Vue.js] 4장 - 입력 폼 데이터 가져오기v-model 데이터 입력 select 지난 장에서는 v-bind를 이용해서 HTML 태그 속성 값을 Vue로 다루는 법을 배웠습니다. 이번에는 사용자가 입력한 데이터를 Vue로 가져오는 법에 대해 다룹니다. 웹 페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.