반응형
vue3 구성 API의 vuex 모듈 속성
vue는 처음이고 vue 3과 컴포지션 API로 작업하고 있습니다.컴포지션 API와 관련된 것을 찾는 것은 매우 어렵기 때문에 도움을 청하려고 합니다.API를 사용하기 위해 vuex 모듈과 Axios를 조합하여 사용하고 있습니다.
이 코드를 옵션 API에서 컴포지션 API로 전송하려면 어떻게 해야 하나요?
TestApi.js
import axios from 'axios'
const posts = {
namespaced: true,
state: {
posts: []
},
mutations: {
SET_POSTS(state, data){
state.posts = data
}
},
actions: {
loadPosts({commit}) {
axios
.get('https://jsonplaceholder.typicode.com/posts')
.then( res => {
commit('SET_POSTS', res.data)
} )
.catch(error => console.log(error))
}
},
getters: {
getPosts(state){
return state.posts
}
}
}
export default posts
App.vue
<template>
<div class="post" v-for="post in getPosts" :key="post.id">
<h1>{{ post.title }}</h1>
<p>{{ post.body }}</p>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import { computed } from 'vue'
export default {
computed: {
...mapGetters('posts', ['getPosts'])
},
created(){
this.$store.dispatch('posts/loadPosts')
}
}
</script>
<style>
.post{
margin-bottom: 20px;
}
</style>
저는 이런 걸 해봤어요.하지만 작동하지 않습니다.
import { useStore } from 'vuex'
import { computed } from 'vue'
export default {
setup(){
getData();
const store = useStore()
function getData(){
store.dispatch('posts/loadPosts');
}
const getPosts = computed(() => store.getters['getPosts'])
return{ getPosts }
}
}
오류: 캡처되지 않음(예약 없음)TypeError: 정의되지 않은 속성 '디스패치'를 읽을 수 없습니다.
스토어를 초기화한 후 기능을 실행해야 합니다.
setup(){
const store = useStore()
getData();
...
언급URL : https://stackoverflow.com/questions/68908674/vuex-module-axios-in-vue3-composition-api
반응형
'programing' 카테고리의 다른 글
리플렉션을 사용하여 패키지의 모든 클래스를 찾을 수 있습니까? (0) | 2022.07.10 |
---|---|
Vuex mapstate 개체가 정의되지 않았으며 [vuex] 알 수 없는 변환 유형: " (0) | 2022.07.10 |
반응성을 트리거하지 않고 Vuex 상태 차이를 계산하는 방법 (0) | 2022.07.10 |
라우터에 데이터를 삽입하려면 어떻게 해야 합니까?각 vuejs 컴포넌트 전에? (0) | 2022.07.10 |
[Vue warn] :렌더 오류: "TypeError: _vm.activity.activity가 정의되지 않았습니다." (0) | 2022.07.10 |