데이터가 Vuex에 아직 유지되지 않은 경우 형제 구성 요소 간에 데이터를 공유하시겠습니까?
동일한 데이터를 공유하는 두 개의 형제 구성 요소가 있고 해당 데이터가 아직 유지되지 않은 경우Vuex
(예: 직접 페이지 로드)api/v1/calendars/:id
양쪽 컴포넌트 내에서 해당 자원에 대한 콜이 필요합니까?다음을 읽었습니다.
Vue 컴포넌트는 가능한 한 독립적이고 격리되어 있어야 합니다.
그것이 사실일 경우, 데이터 요구는Vuex
두 컴포넌트 모두 올바르지만 어플리케이션은 2개의 네트워크 콜을 발신합니다.단, 그 데이터가 이미1개의 컴포넌트에서 사용할 수 없는 경우 1개의 네트워크 콜만 필요합니다.Vuex
.
필요한 자원에 대해 단일 네트워크를 호출하여 해당 페이지의 여러 컴포넌트 간에 데이터를 공유하는 것이 이상적입니다.Vuex
.
이 코드를 두 컴포넌트, 특히 이 컴포넌트에 복제합니다.created()
방법.
<script>
import store from '@state/store'
import { calendarComputed } from '@state/helpers'
export default {
data() {
return {
calendar: null,
}
},
computed: {
...calendarComputed,
},
created() {
// Are calendars already persisted?
if (!this.calendars.length) {
store.dispatch('calendar/getCalendars').then((res) => {
this.calendar = res.find((calendar) => { if (calendar.id == this.$route.params.id) return calendar })
})
} else {
this.calendar = this.calendars.find((calendar) => { if (calendar.id == this.$route.params.id) return calendar })
}
},
}
</script>
가장 간단한 방법은 캘린더가 Import되었는지 여부에 대해 컴포넌트가 (명시적으로) 신경쓰지 않도록 하는 것입니다.
단순히 스토어에 가져오라고 지시하지만 실제로 가져올 필요가 있는지 여부는 액션에 따라 결정됩니다.
Vuex는 단방향 데이터 흐름이므로 작업으로부터 컴포넌트로 상태 정보가 반환되지 않고 컴포넌트는 항상 데이터가 도착할 때까지 기다립니다.
반응을 일으키려면 다음 항목을 조합하여 사용합니다.computed
그리고.getter
.
요소
created() {
/* tell the store 'this is what I need' */
store.dispatch('calendar/getCalendars');
},
...
computed: {
calendar() {
/* reactive - initially null, then gets a value when the store is updated */
return this.$store.getters['calendar/calendarById'](this.$route.params.id)
},
},
가게
getters: {
calendarById: (state) => {
/* return a function so that param can be passed from component */
return (id) => state.calendars ? state.calendars.find(c => c.id === id) : null;
},
}
actions: {
getCalendars (store) {
/* only perform the fetch if the store does not already contain the data */
if (!store.state.calendars) {
fetch(calendarsUrl).then(res => store.commit('setCalendars', res); // e.g
}
},
}
언급URL : https://stackoverflow.com/questions/55250487/share-data-between-sibling-components-if-data-is-not-already-persisted-to-vuex
'programing' 카테고리의 다른 글
Linux에서 정적 라이브러리를 컴파일하는 방법 (0) | 2022.08.15 |
---|---|
Java에서 목록을 쉼표로 구분된 문자열로 변환하는 가장 좋은 방법 (0) | 2022.08.15 |
Java에서는 XML을 파일이 아닌 문자열로 해석하려면 어떻게 해야 합니까? (0) | 2022.08.15 |
nuxt 가져오기 후크 요청을 취소하는 중 (0) | 2022.08.15 |
pthread_t 인쇄 방법 (0) | 2022.08.15 |