초보 학생 에 게 보 내 는 vuex 는 손가락 북 소결 을 빠르게 올 렸 다.
9603 단어 vuex빠 른 속도 로 착수 하 다.
끌어들이다
//store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {...},
mutations: {...},
actions: {...}
})
export default store
//main.js
...
import store from './store'
Vue.prototype.$store = store
const app = new Vue({
store,...
})
...
//test.vue :
import {mapState,mapMutations} from 'vuex'
스테이 트 편state 업데이트 실시 간 렌 더 링 은=coptute d==이 계산 속성 을 기반 으로 합 니 다.data 에 직접 부여 하면 초기 값 만 부여 할 수 있 고 state 에 따라 실시 간 렌 더 링 을 바 꾸 지 않 습 니 다.
<!--state -->
export default {
data() {
return {
name:this.$store.state.name,
};
},
}
<!-- state -->
<template>
<div>
{{name}}
</div>
<template>
export default {
computed: {
name() {
return this.$store.state.name;
}
},
}
메모:data 의 변 수 는 coptute d 의 변수 와 이름 을 바 꾸 면 data 우선,이름 을 주의 하 십시오.여러 state 값 을 가 져 오고 여러 함수 return 을 쓰 는 것 은 번 거 로 우 므 로=mapState==보조 함수 가 있 습 니 다.
<!-- , -->
export default {
computed: {
token(){
return this.$store.state.token;
},
name(){
return this.$store.state.name;
}
},
}
<!--mapState -->
import { mapState } from 'vuex'
export default {
computed: mapState([
'token',
'name'
])
}
우 리 는 부분 적 인 계산 이 있 는데,어떻게 mapState 와 함께 사용 합 니까?
import { mapState } from 'vuex'
export default {
computed:{
getTime(){
return 123;
},
...mapState([
'token',
'name'
])
}
}
저희 가 별명 을 지어 드릴 게 요.
<template>
<div>
xiaokeai,dahuilang
token,name state
{{xiaokeai}}
</div>
<template>
<script>
import { mapState } from 'vuex'
export default {
computed:{
...mapState({
xiaokeai:"token",
dahuilang:"name",
})
}
}
</script>
state 와 data 에 무슨 일이 일어나 야 합 니까?
<template>
<div>
token 123;
balabala 123
{{balabala}}
</div>
<template>
<script>
import { mapState } from 'vuex'
export default {
data(){
return {
pikaqiu:" "
}
}
computed:{
...mapState({
xiaokeai:"token",
dahuilang:"name",
// `this` ,
balabala(state){
return state.token + this.pikaqiu;
}
})
}
}
</script>
대상 치 를 어떻게 깨 뜨 립 니까?
<template>
<div>
{{daSon}}
{{xiaoSon}}
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
data(){
return {
pikaqiu:" "
}
}
computed:{
...mapState({
daSon: state=>state.obj.yeye.baba.daSon,
xiaoSon:state=>state.obj.yeye.baba.xiaoSon,
})
}
}
</script>
이런 방식 으로 대상 을 업무 에 쓰 면 직관 적 이지 도 않 고 공용 하지 도 않 는 다.다음 절=Getter==더 좋 은 방안 이 있다.Getter 편
Getter 는 state 의[대상]값 을 미리 처리 하여 사용 할 때 직접 추출 할 수 있 도록 합 니 다.
this.$store.getters.xxx 에서 도 사용 할 수 있 고,mapGetters 보조 함수 도 사용 할 수 있 습 니 다.=보조 함수 주의:=state 와 마찬가지 로 coptute d 에 주입 할 수 있 습 니 다.
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
obj: {
yeye: {
baba: {
daSon: " ",
xiaoSon: " "
}
}
}
},
getters: {
<!-- -->
getson: state => {
return state.obj.yeye.baba;
}
}
})
export default store
<!-- , state , -->
<template>
<div>
{{getson}}
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
getson
])
}
}
</script>
뮤 테 이 션 편작업:this.$store.commt("이름","값");
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
token: "vuex token",
},
mutations: {
setToken(state, val) {
state.token = val;
}
}
})
export default store
mapMutations 보조 함수,state 와 마찬가지 로 별명 을 지정 할 수 있 습 니 다.==주의:=보조 함수 가 methods 에 주 입 됩 니 다.
methods: {
...mapMutations([
'setToken'
])
}
<!-- -->
this.setToken(100); //token 100
Mutation 은 동기 함수 여야 합 니 다.이 말 을 오해 하지 마 세 요.비동기 가 사용 할 수 없다 고 생각 하지 마 세 요.비동기 가 안에 사용 할 수 있 습 니 다.보기 의 렌 더 링,수치 추출 에 문제 가 없습니다.문 제 는 디 버 깅 할 때 일부 브 라 우 저 디 버 깅 플러그 인 이 state 를 정확하게 감청 하지 못 한 다 는 것 입 니 다.그래서 디 버 깅 을 편리 하 게 하고,가능 한 한 이 보 를 action 에 기록 합 니 다.액 션 편
action 의 인 자 는 state 가 아니 라 context 입 니 다.context 에는 commt,state 가 포함 되 어 있 습 니 다.기본 동작:this.$store.dispatch("함수 명","값")
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
}
},
actions: {
increment (context) {
context.commit('increment')
}
}
})
<!-- methods -->
import { mapActions } from 'vuex'
export default {
methods: {
...mapActions([
"increment"
])
}
}
<!-- -->
this.increment(123);
모듈 편module 목적 은 store 를 기능 에 따라 여러 파일 로 나 누 어 유지 관리 에 유리 합 니 다.module 는 2 가지 상황 으로 나 누 었 습 니 다.1.네 임 스페이스 가 있 습 니 다.2.네 임 스페이스 가 없습니다.
네 임 스페이스 가 없습니다:action,mutation,getter 는 전역 에 등록 되 어 있 으 므 로 방법 함수 가 같은 이름 을 설정 하지 마 십시오.같은 이름 이면 모두 실 행 됩 니 다.
stete 예 외 는 부분 입 니 다.
import Vue from 'vue';
import Vuex from 'vuex';
import moduleA from "./modules/cat.js";
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
token: "vuex token",
},
modules:{
moduleA
}
})
export default store;
<!--moduleA.js-->
export default {
// namespaced: true,
state: {
cat:" cat",
},
mutations: {
setCat(state, val) {
state.cat = val;
}
},
actions: {
},
getters: {
}
};
이름 없 는 공간 값 추출
this.$store.state.moduleA.cat
...mapState({
cat:state=>state.moduleA.cat,
}),
(state , ):
...mapState([
"cat"
]),
이름 없 는 공간 변경 값
,
this.$store.commit("setCat",666);
...mapMutations([
"setCat"
])
네 임 스페이스 가 있 습 니 다:state,action,mutation 과 getter 는 부분 적 이 고 모듈 간 의 이름 이 서로 충돌 하지 않 으 며 이름 을 바 꿀 수 있 습 니 다.namespaced 를 true 로 설정 하면 오픈 가능
<!--moduleA.js -->
export default {
namespaced: true,
state: {
cat:" cat",
}
}
네 임 스페이스 값
this.$store.state.moduleA.cat
<!-- : , modules key -->
<!-- , , -->
...mapState("moduleA",[
"cat"
])
네 임 스페이스 변경 값
<!-- , -->
...mapMutations("moduleA",[
"setCat"
])
this.setCat(888);
:
this.$store.commit("moduleA/setCat",666);
마지막 플러그 인vuex 페이지 새로 고침 은 데 이 터 를 잃 어 버 립 니 다.vuex-persistedstate 플러그 인 으로 해결 할 수 있 습 니 다.
import createPersistedState from "vuex-persistedstate";
const store = new Vuex.Store({
state: {},
mutations: {},
actions: {},
getters: {},
modules:{},
plugins: [
createPersistedState({
storage: window.sessionStorage
})
]
})
export default store
초보 학생 들 에 게 보 내 는 vuex 의 빠 른 손가락 북 소결 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 vuex 의 빠 른 시작 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vuex의 템플릿 리터럴 유형TypeScript 4.1은 템플릿 리터럴 유형을 도입했습니다. 언뜻 보기에는 별로 흥미롭게 들리지 않습니다. 다른 유형을 기반으로 하는 리터럴 유형의 조합을 만들 수 있습니다. 그러나이 기능이 매우 유용한 경우가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.