반응형
Nux JS에서 Vuex 모듈 모드를 올바르게 사용하는 방법은 무엇입니까?
안녕하세요 저는 Nuxt JS의 초보 사용자입니다.Nux 프로젝트에 Vuex 모듈 모드를 사용하려고 합니다.
기본적으로 저는 VueX 모듈 안에서 공리를 사용하고 있습니다.아래 내 코드:
store/message/users.j
import axios from 'axios';
const state = () => ({
users: []
});
// Sets the values of data in states
const mutations = {
setUsers(state, users) {
state.users = users;
}
};
const actions = {
nuxtServerInit(vuexContext, context) {
return axios.get('https://sample-url.com/users')
.then((response) => {
vuexContext.commit('setUsers', response.data.data.results);
})
.catch((err) => {
context.error(err);
});
},
setUsers(vuexContext, users) {
vuexContext.commit('setUsers', users);
}
};
// retrieves the data from the state
const getters = {
getUsers(state) {
return state.users;
}
};
export default {
state,
mutations,
actions,
getters
};
그런 다음 이 모듈을 store/index.js에 포함합니다.
import Vuex from 'vuex';
import Users from "~/store/modules/users";
const createStore = () => {
return new Vuex.Store({
state: {},
mutations: {},
modules: {
Users
}
})
}
export default createStore;
그런 다음 페이지 중 하나인 pages/index.vue와 같은 Vuex에 저장된 사용자를 가져옵니다.
<script>
export default {
computed: {
loadedUsers() {
return this.$store.getters.getUsers;
}
}
}
</script>
제 질문은 다음과 같습니다.
- 다른 페이지에서 사용자가 필요하지 않다고 페이지를 새로 고칠 때마다 사용자를 가져오기 위해 GET 요청을 다시 API로 보냅니다.i로 보냅니다.pages/index.vue와 같이 필요한 페이지에만 모듈을 사용하려면 어떻게 해야 합니까?
- GET 주석과 같은 다른 요청에 대해 store/modules/comment.js 아래에 있는 모듈을 사용한 후 다시 it store.js를 포함하는 경우 모듈을 어떻게 사용할 수 있습니까?
vuex 스토어에서 모듈을 설정하면 해당 모듈은 스토어의 일부일 뿐이며, 물론 글로벌하고 항상 그럴 것입니다.따라서 선택한 페이지나 구성요소에만 적용할 수 없습니다.api 호출을 반환된 데이터를 사용하는 페이지로만 제한하려면 몇 가지 방법으로 할 수 있습니다.
먼저 api 호출을 스토어에서 모두 꺼내 비동기 데이터를 사용하여 페이지에서 만들 수 있습니다.그래서 다음과 같은 것이 있습니다.
//users.vue
<script>
export default {
data: () => ({
users: []
}),
async asyncData({$axios}) {
let {data} = await $axios.$get('https://sample-url.com/users')
return {
users: data
}
}
}
</script>
그렇지 않으면 api 호출을 스토어에 보관하는 것이 좋다면 nextServerInit에서 호출을 꺼내 이렇게 페이지에서 전송할 수 있습니다.
const actions = {
nuxtServerInit(vuexContext, context) {
},
setUsers(vuexContext, users) {
return axios.get('https://sample-url.com/users')
.then((response) => {
vuexContext.commit('setUsers', response.data.data.results);
})
.catch((err) => {
context.error(err);
});
}
};
그런 다음 페이지에서 setUsers를 다음과 같이 디스패치합니다.
mounted: function () {
this.$nextTick(function () {
this.$store.dispatch('setUsers')
})
},
computed: {
loadedUsers() {
return this.$store.getters.getUsers;
}
}
질문의 두 번째 부분에 대해서는 다른 vuex 모듈도 동일한 방식으로 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/53792085/how-to-properly-use-vuex-module-mode-for-nuxt-js
반응형
'programing' 카테고리의 다른 글
파이썬 멀티프로세싱 모듈의 .join() 메서드는 정확히 무엇을 하고 있습니까? (0) | 2023.07.17 |
---|---|
Android Studio 오류 "Android Gradle 플러그인을 실행하려면 Java 11이 필요합니다.현재 Java 1을 사용하고 있습니다.8" (0) | 2023.07.17 |
셀러리 작업을 단위 테스트하는 방법은 무엇입니까? (0) | 2023.07.17 |
"K extends key of T"와 "key of T"를 직접 사용하는 것의 차이점은 무엇입니까? (0) | 2023.07.17 |
다른/변경된 경우 업데이트 (0) | 2023.07.17 |