inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"

Pinia 기초 : state, getters, actions

PINIA 로드 시점 관련 문의 드려요

558

design

작성한 질문수 1

0

vue.js

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
design님, Pinia 스토어가 설치되기 전에 로컬 스토리지로부터 검색 조건을 가져와 Axios 호출을 시도할 때 문제가 발생한다고 말씀해 주셨네요. 이는 Vue 인스턴스가 완전히 마운트되기 전에 스토어에 접근하려 하기 때문에 발생하는 일입니다.

setTimeout을 사용하셔서 문제를 회피하셨지만 좀 더 안정적인 해결책을 찾으시는 것 같군요. 가장 일반적인 접근 방법은 Vue의 생명주기 훅을 이용하는 것입니다. created, mounted와 같은 생명주기 훅을 사용하여 컴포넌트가 마운트 되었을 때 로직을 수행하도록 설정할 수 있습니다.

예를 들어, mounted 훅 안에서 로컬 스토리지의 검색 조건을 확인하고, 해당 조건으로 데이터를 검색하는 로직을 실행하면 됩니다. 이렇게 하면 Vue 인스턴스가 준비되고 Pinia 스토어가 설치된 후에 데이터를 요청하게 되므로, setTimeout을 사용하지 않아도 됩니다.

Vue 3에서 Pinia를 사용할 경우, setup 함수 내에서 스토어를 초기화하고 반환된 스토어를 사용하거나, onMounted와 같은 Composition API의 라이프사이클 훅을 이용하여 처리하실 수 있습니다.

아래는 onMounted를 사용하는 예시 코드입니다:

import { onMounted } from 'vue';
import { useMyStore } from '@/stores/mystore';

export default {
  setup() {
    const myStore = useMyStore();

    onMounted(() => {
      const searchConditions = localStorage.getItem('searchConditions');
      if (searchConditions) {
        myStore.fetchBoardData(searchConditions);
      }
    });

    return { /* ... */ };
  }
}

이 코드는 컴포넌트가 마운트된 후(onMounted 훅 내에서) 로컬 스토리지에서 검색 조건을 불러와 스토어의 fetchBoardData 액션을 호출하여 데이터를 검색합니다.

추가로 궁금한 점이 있으시다면, Vue 3와 Pinia 관련 문서를 참고하시거나 질문에 대한 추가적인 설명이 필요하시면, 인프런의 강의 문의하기를 통해 문의해 보세요.

질문드립니다.

0

32

0

unplugin-vue-components 질문드립니다.

0

40

2

강의듣다가 헷갈려서 질문드립니다.

0

35

1

와 짐코딩님 강의 들으면서 느끼는게 많네요.

0

33

1

질문드립니다.

0

33

2

라우터 인스톨 후 실행안됨

1

50

2

코드 자동 포매팅 질문

0

68

2

필터 watchEffect 질문입니다.

0

52

1

json-server 오류가 다른게 뜨네요

0

114

1

미리보기가 안됩니당...

0

69

2

unplugin-vue-components

0

84

2

TypeError 질문

0

52

1

v-model="show" :show="show" 같이 사용?

1

57

1

hash 모드 배포의 필요성?

0

61

2

.eslintrc.cjs 가 없습니다

0

95

2

title,content값이 비어서 저장되는데 제가 혹시 어떤 부분을 잘못 작성했는지 ㅜㅜ 알고싶습니다.

0

98

3

_title_like: "", 문의드려요 해당 값을 설정하면 list가 아에 안나옵니다.

0

64

1

@click.prevent="params._page = pageNum"> 에 .value를 안쓰는 이유가 궁금합니다.

0

73

2

중첩된 컴포넌트 문제

0

75

2

교안에 있는 부분이 아닌가요?

0

109

2

useAxios Proxy(Object) RefImpl

0

114

1

axios timeout

0

330

3

강의와 상관은 없지만, 궁금한 점이 있어 질문드립니다.

0

124

2

컴포넌트 분리 부분에서 오류가 나요ㅠㅠ

0

169

2