웹 프론트엔드 JS 튜토리얼 vuex state+mapState 실무 프로젝트 분석

vuex state+mapState 실무 프로젝트 분석

Jun 07, 2018 am 11:40 AM
state vuex

이번에는 vuex state+mapState의 실제 프로젝트에 대한 분석을 가져오겠습니다. vuex state+mapState의 주의 사항은 무엇입니까? 다음은 실제 사례입니다.

먼저 vue cli를 사용하여 자신만의 vue 프로젝트를 구축하세요

1.npm i -g vue-cli
2.vue init webpack Sell(sell은 프로젝트 이름입니다)
3 끝까지 입력하세요. vue-router, es6 구문 검사 등과 같은 일부 종속 패키지를 설치할지 묻는 메시지가 표시됩니다. 개인 습관이나 취미에 따라 Y/N을 선택하세요.)
4.npm i (이것은 설치 프로젝트의 종속 패키지입니다. )
5. npm run dev (vue 프로젝트 시작) 이때 페이지에 vue 로고가 보이면 vue 프로젝트의 기본 구성이 완료되었음을 의미하며, 쓸모 없는 구성 요소를 삭제할 수 있습니다
6. Webpack Sell은 기본적으로 vuex를 설치하지 않으므로 vuex를 설치해야 합니다. 서버를 종료하려면 명령줄에서 ctrl+c를 두 번 누르고, vuex를 설치하려면 npm install vuex –save를 설치해야 합니다.
7. src 디렉터리 이름을 helloVuex로 지정하겠습니다(이 이름은 원하는 대로 할 수 있으며 행복합니다). 이 구성 요소는 주로 기본 컨테이너로 사용되며 콘텐츠만 표시합니다
8. 그런 다음 원하는 이름으로 새 구성 요소를 만듭니다. 여기서는 디스플레이 구성요소라고 부릅니다) 상태를 수락합니다
9. 다음으로 src 디렉터리에 store라는 새 폴더를 만들고 test.js라는 저장소 아래에 js 파일을 만듭니다(여기서 저장소는 우리의 전면입니다. end data Warehouse) 상태 관리를 위해 vuex를 사용합니다. Store는 vuex의 핵심이므로 store라는 이름을 갖습니다. src 디렉토리에 새로운 store 파일을 생성하고, store 디렉토리에 새로운 test.js 파일을 만듭니다. . vuex를 사용하기 전에 vue에게 이를 사용하도록 지시해야 한다는 것을 알 수 있습니다. Vue.use(Vuex) 여기서는 관리할 변수 개수가 하나만 있으므로 저장소 객체를 생성할 때 매개변수를 생성자에 전달하면 됩니다. 상태에서 하나의 카운트를 가지며 0으로 초기화됩니다.

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
 state: {
 count: 0
 }
export default store
로그인 후 복사

이제 모든 상태, 즉 변수가 test.js에 배치되는데, 우리 컴포넌트가 상태 수정 값을 어떻게 얻을 수 있을까요? 여기서 작동하는 데는 두 단계가 있습니다

  1. Vue는 저장소 개체를 루트 인스턴스에 주입하는 주입 메커니즘을 제공합니다. vue의 루트 인스턴스는 새로운 Vue 생성자이며, 모든 하위 구성 요소에서 this.$store는 store 객체를 가리킵니다. test.js에서는 store를 내보내고 store가 노출되었으므로 new Vue()가 main.js에 있으므로 main.js에 직접 store를 도입하고 주입할 수 있습니다.

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/test'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store,
 template: '<App/>',
 components: { App }
})
로그인 후 복사

2. 하위 구성 요소에서는 계산된 속성을 사용합니다. 계산된 속성은 종속성에 따라 자동으로 업데이트됩니다. 따라서 상점의 상태가 변경되는 한 자동으로 변경됩니다. display.vue에서 다음과 같이 변경합니다. 하위 구성 요소의 This.$store는 저장소 개체를 가리킵니다. test.js의 개수를 8로 변경하면 페이지에서는 8이 됩니다.

<template>
 <p>
  <h3>Count is {{count}}</h3>
 </p>
</template>
<script>
 export default {
  computed: {
   count () {
    return this.$store.state.count 
   }
  }
 }
</script>
로그인 후 복사

3. 상태 값은 계산된 속성을 통해 얻을 수 있지만 구성요소의 각 속성(예: 개수)은 함수입니다. 10개가 있으면 10개의 함수를 작성하고 이를 10번 반복해야 합니다. .$store.state, 별로 편리하지 않습니다. Vue는 상태를 구성 요소에 직접 매핑하는 mapState 함수를 제공합니다.

물론 mapState를 사용하기 전에 먼저 도입해야 합니다. 객체나 배열을 받아들이는 두 가지 방법으로 사용될 수 있습니다. 여전히 display.vue 구성 요소 아래에 있습니다.

 객체 사용법은 다음과 같습니다.

<script>
 import {mapState} from "vuex"; // 引入mapState 
 export default {
      // 下面这两种写法都可以
  computed: mapState({
   count: state => state.count // 组件内的每一个属性函数都会获得一个默认参数state, 然后通过state 直接获取它的属性更简洁  
   count: 'count'         // 'count' 直接映射到state 对象中的count, 它相当于 this.$store.state.count,
  })
 }
</script>
로그인 후 복사

배열 방법은 다음과 같습니다.

<script>
 import {mapState} from "vuex";
 export default {
  computed: mapState([ // 数组
   "count"
  ])
 }
</script>
로그인 후 복사

4, 마지막 질문이 하나 있습니다. 구성 요소 내부에도 계산된 속성이 있으면 어떻게 될까요? mapState에 속하지 않습니다. 그런 다음 객체 분할을 사용하여 mapState 함수에 의해 생성된 객체를 하나씩 나눕니다. 처음과 마찬가지로 계산된 속성을 하나씩 나열합니다. 10개의 속성이 있으면 10개의 함수를 작성합니다.

... es6에서는 분할에 사용되지만 배열 분할만 가능합니다. ECMAScript stage-3에서는 객체를 분할할 수 있으므로 이때는 babel-stage-3도 사용됩니다. 설치가 완료된 후 npm install babel-preset-stage-3 --save-dev를 추가하는 것을 잊지 마세요. babelrc의 babel 구성 파일에 stage-3,

을 작성합니다. 그렇지 않으면 항상 오류가 보고됩니다. 구성 요소의 계산 친숙성을 표시하려면 페이지에 p 태그를 추가하세요.

babelrc

{
 "presets": [
 ["env", {
  "modules": false,
  "targets": {
  "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
  }
 }],
 "stage-3"
 ],
 "plugins": ["transform-runtime"],
 "env": {
 "test": {
  "presets": ["env", "stage-3"],
  "plugins": ["istanbul"]
 }
 }
}
로그인 후 복사

display.vue 구성 요소가 변경된 후

<template>
 <p>
  <h3>Count is {{count}}</h3>
  <p>组件自己的内部计算属性 {{ localComputed }}</p>
 </p>
</template>
<script>
 import {mapState} from "vuex";
 export default {
  computed: {
   localComputed () {
    return this.count + 10;
   },
   ...mapState({
    count: "count"
   })
  } 
 }
</script>
로그인 후 복사

test.js의 state.count를 10으로 변경하여 효과를 확인하세요

Vuex에서 mapState의 사용법을 살펴보겠습니다

오늘 Vuex를 사용하면서 함정에 빠졌습니다. 그것은 저의 무지함이기도 합니다. 내 코드에 오류가 있습니다. 정말 천둥소리가 난다~~~~~~

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations'
import actions from './action'
import getters from './getters'
Vue.use(Vuex)
const state = {
 userInfo: { phone: 111 }, //用户信息
 orderList: [{ orderno: '1111' }], //订单列表
 orderDetail: null, //订单产品详情
 login: false, //是否登录
}
export default new Vuex.Store({
 state,
 getters,
 actions,
 mutations,
})
computed: {
   ...mapState([
    'orderList',
    'login'
   ]),
  }, 
  mounted(){ 
   console.log(typeof orderList); ==>undefind
   console.log(typeof this.orderList)==>object
  }
로그인 후 복사

mapState通过扩展运算符将store.state.orderList 映射this.orderList  这个this 很重要,这个映射直接映射到当前Vue的this对象上。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何操作Vue做出proxy代理

使用jquery获取上传文件具体内容

위 내용은 vuex state+mapState 실무 프로젝트 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vuex를 사용하여 Vue2.x에서 전역 상태를 관리하는 모범 사례 Vuex를 사용하여 Vue2.x에서 전역 상태를 관리하는 모범 사례 Jun 09, 2023 pm 04:07 PM

Vue2.x는 현재 가장 널리 사용되는 프런트 엔드 프레임워크 중 하나이며 전역 상태 관리를 위한 솔루션으로 Vuex를 제공합니다. Vuex를 사용하면 상태 관리가 더욱 명확해지고 유지 관리가 쉬워집니다. 개발자가 Vuex를 더 잘 사용하고 코드 품질을 향상하는 데 도움이 되도록 Vuex의 모범 사례가 아래에 소개됩니다. 1. 모듈식 조직 상태를 사용합니다. Vuex는 단일 상태 트리를 사용하여 애플리케이션의 모든 상태를 관리하고 구성 요소에서 상태를 추출하여 상태 관리를 더 명확하고 이해하기 쉽게 만듭니다. 상태가 많은 애플리케이션에서는 모듈을 사용해야 합니다.

Vue3에서 Vuex를 사용하는 방법 Vue3에서 Vuex를 사용하는 방법 May 14, 2023 pm 08:28 PM

Vuex는 무엇을 하나요? Vue 공식: 상태 관리 도구 상태 관리란 무엇입니까? 상태는 여러 구성 요소 간에 공유되어야 하며 하나의 변경으로 모든 것이 변경됩니다. 예를 들어 사용자 로그인 상태, 사용자 이름, 지리적 위치 정보, 장바구니 항목 등 전역적으로 사용되는 일부 상태 정보가 있습니다. 이때 전역 상태 관리를 위한 도구가 필요하며 Vuex가 그러한 도구입니다. 단일 페이지 상태 관리 View–>Actions–>State 뷰 레이어(view)는 상태(state)를 변경하기 위한 액션(action)을 트리거하고 뷰 레이어(view) vuex(Vue3.0)에 다시 응답합니다.

Vue 애플리케이션에서 vuex를 사용할 때 '오류: [vuex]는 돌연변이 처리기 외부에서 vuex 저장소 상태를 변경하지 않습니다.' 문제를 해결하는 방법은 무엇입니까? Vue 애플리케이션에서 vuex를 사용할 때 '오류: [vuex]는 돌연변이 처리기 외부에서 vuex 저장소 상태를 변경하지 않습니다.' 문제를 해결하는 방법은 무엇입니까? Jun 24, 2023 pm 07:04 PM

Vue 애플리케이션에서는 vuex를 사용하는 것이 일반적인 상태 관리 방법입니다. 그러나 vuex를 사용할 때 "오류:[vuex]donotmutatevuexstorestateoutsidemutationhandlers"와 같은 오류 메시지가 나타날 수 있습니다. 이 오류 메시지는 무엇을 의미합니까? 이 오류 메시지가 나타나는 이유는 무엇입니까? 이 오류를 해결하는 방법은 무엇입니까? 이 기사에서는 이 문제를 자세히 다룰 것입니다. 오류 메시지에는 다음이 포함됩니다.

vuex의 구현 원칙에 대해 자세히 알아보세요. vuex의 구현 원칙에 대해 자세히 알아보세요. Mar 20, 2023 pm 06:14 PM

인터뷰에서 vuex의 구현 원리에 대한 질문을 받았을 때 어떻게 답해야 할까요? 다음 기사는 vuex의 구현 원리에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

Vue 애플리케이션에서 vuex를 사용할 때 '오류: [vuex] 알 수 없는 작업 유형: xxx' 문제를 해결하는 방법은 무엇입니까? Vue 애플리케이션에서 vuex를 사용할 때 '오류: [vuex] 알 수 없는 작업 유형: xxx' 문제를 해결하는 방법은 무엇입니까? Jun 25, 2023 pm 12:09 PM

Vue.js 프로젝트에서 vuex는 매우 유용한 상태 관리 도구입니다. 이는 여러 구성 요소 간에 상태를 공유하는 데 도움이 되며 상태 변경을 관리하는 안정적인 방법을 제공합니다. 그러나 vuex를 사용할 때 가끔 "Error:[vuex]unknownactiontype:xxx" 오류가 발생합니다. 이 기사에서는 이 오류의 원인과 해결 방법을 설명합니다. 1. 오류 원인 vuex를 사용할 때 몇 가지 액션과 뮤를 정의해야 합니다.

Vue 애플리케이션에서 vuex를 사용할 때 'TypeError: 정의되지 않은 'xxx' 속성을 읽을 수 없습니다' 문제를 해결하는 방법은 무엇입니까? Vue 애플리케이션에서 vuex를 사용할 때 'TypeError: 정의되지 않은 'xxx' 속성을 읽을 수 없습니다' 문제를 해결하는 방법은 무엇입니까? Aug 18, 2023 pm 09:24 PM

Vue 애플리케이션에서 Vuex를 사용하는 것은 매우 일반적인 작업입니다. 그러나 Vuex를 사용할 때 가끔 "TypeError: Cannotreadproperty'xxx'ofundefine" 오류 메시지가 표시됩니다. 이 오류 메시지는 정의되지 않은 속성 "xxx"를 읽을 수 없어 프로그램 오류가 발생함을 의미합니다. 이 문제의 원인은 실제로 매우 분명합니다. Vuex의 특정 속성을 호출할 때 이 속성이 올바르게 설정되지 않았기 때문입니다.

vue3+vite에서 vuex를 사용하는 방법 vue3+vite에서 vuex를 사용하는 방법 Jun 03, 2023 am 09:10 AM

구체적인 단계: 1. vuex(vue3 권장 4.0 이상) pnpmivuex-S2를 설치하고, main.js에서 importstorefrom'@/store'//hx-app의 전역 구성을 구성합니다. constapp=createApp(App)app.use(store) 3 .새 관련 폴더 및 파일을 생성합니다. 여기에서는 vuex 모듈을 사용하여 다른 페이지와 파일을 배치한 다음 여기에서 Import.meta.glob을 사용합니다. ~의

Vue 애플리케이션에서 vuex를 사용할 때 '오류: 'xxx'가 이미 데이터 속성으로 선언되었습니다.' 문제를 해결하는 방법은 무엇입니까? Vue 애플리케이션에서 vuex를 사용할 때 '오류: 'xxx'가 이미 데이터 속성으로 선언되었습니다.' 문제를 해결하는 방법은 무엇입니까? Jun 24, 2023 pm 08:46 PM

Vue 애플리케이션 개발 과정에서 vuex를 사용하여 애플리케이션 상태를 관리하는 것은 매우 일반적인 관행입니다. 그러나 vuex를 사용하는 과정에서 때때로 "Error:'xxx'hasalreadybeendeclaredasadataproperty"와 같은 오류 메시지가 나타날 수 있습니다. 이 오류 메시지는 당황스러워 보이지만 실제로는 Vue 구성 요소에서 반복되는 값을 사용하기 때문에 발생합니다. . 데이터 속성 및 vuex를 정의하는 변수 이름

See all articles