Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dict
- RDS
- pandas
- flask
- SSA
- async
- wetube
- Class
- react
- SAA
- NeXT
- AWS
- 채팅
- Vue
- TypeScript
- crud
- socket io
- docker
- Props
- node
- git
- 카톡
- S3
- lambda
- merge
- 중급파이썬
- MongoDB
- 파이썬
- EC2
- 튜플
Archives
- Today
- Total
초보 개발자
vuex 새고고침시 초기화 현상 방지 + secure ls 본문
vuex-persistedstate 라는 npm 이고 vuex에 저장되는 값들을 사용하는 웹브라우저의 localstorage에 저장하며, 새로고침시 그 값이 있다면 localstorage의 값을 가져와 사용하는 방식이다..
localstorage에 올리면 누구나 다 볼 수 있으니 vuex-persistedstate 에서는 js-cookie, secure-ls를 이용하여 localstorage말고, cookie에 저장하는 방식과 암호화된 방식으로 데이터를 저장하는 방법을 알려주고 있다.
먼저 아래의 모듈을 설치해주자
npm install vuex-persistedstate
그리고 아래처럼 플러그 store의 플러그인을 만들어서 거기에 적어준다.
import Vue from vue;
import Vuex from vuex'
import createPersistedState from 'vuex-persistedstate';
import modules from './modules';
Vue.use(Vuex);
const store = new Vuex.Store({
modules,
plugins: [
createPersistedState();
]
})
그럼 우리의 모든 store에 있는 정보들이 다 local에 저장되지만 양이 많아지면 속도 저하로 이어질 수 있기에 꼭 필요한 것만 올려보려고 한다.
//src/store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
import createPersistedState from 'vuex-persistedstate';
import moduleName from './moduleName';
Vue.use(Vuex);
const store = new Vuex.Store({
modules: moduleName,
plugins: [
//주목! : 여기에 쓴 모듈만 저장됩니다.
createPersistedState({
paths: ['moduleName'],
});
]
})
export default store;
paths에 원하는 모듈의 이름을 적어주면 저것만 적힌다!!!
웹브라우저의 localstorage에 가보면 적힌 모듈의 state값만 들어있는 것을 확인할 수 있다.
근데 로컬스토리지에 올라간 정보가 암호화가 되지않으면 좋지않으니
secure-ls를 사용하는 방법을 찾아보았다.
npm i secure-ls
아래와 같이 추가만 해주면 사용할 수 있는 것 같다.. 왜 그런지는 모르겠다.
import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'
import common from './modules/common'
import SecureLS from "secure-ls";
const ls = new SecureLS({ isCompression: false });
Vue.use(Vuex)
export default new Vuex.Store({
plugins : [
createPersistedState({
paths: ['manman'],
storage: {
getItem: (key) => ls.get(key),
setItem: (key, value) => ls.set(key, value),
removeItem: (key) => ls.remove(key)
}
})
]
,
modules: {
common,
}
})
'vue.js > 캡틴판교 vue js 중급' 카테고리의 다른 글
vuex (0) | 2022.04.18 |
---|---|
todo remove, toggleCheck (0) | 2022.04.13 |
컴포넌트 생성하기, header footer todolist 만들어보기 (0) | 2022.04.13 |