찾다
웹 프론트엔드View.jsVuex의 돌연변이를 이해하는 방법은 무엇입니까? 그것을 사용하는 방법?

Vuex의 돌연변이를 이해하는 방법은 무엇입니까? 그것을 사용하는 방법?

관련 권장 사항: "vue.js Tutorial"

데이터 변경 방법 모음이 포함된 돌연변이에 대한 일반적인 이해는 Vuex 설계에서 매우 중요한 점, 즉 모든 논리적 방법입니다. 처리 데이터는 mutation 내부에 배치되며, 데이터와 뷰가 분리됩니다.

돌연변이를 사용하는 방법은 무엇인가요?

Mutation 구조: 각 mutation마다 문자열 형식의 이벤트 유형(type)과 콜백 함수(handler)가 있는데, 이는 구독 게시와 다소 유사한 {type:handler()}로도 이해될 수 있습니다. 먼저 이벤트를 등록하고, 응답 유형이 트리거되면 handker()를 호출합니다. 유형 호출 시에는 store.commit 메소드를 사용해야 합니다.

 const store = new Vuex.Store({
    state: {
        count: 1
        },
    mutations: {
   		 increment (state) {      //注册事件,type:increment,handler第一个参数是state;
  		  // 变更状态
   		state.count++}}})
   store.commit('increment')   //调用type,触发handler(state)

Payload: 간단히 이해하면 매개변수 핸들러(스테이지, 페이로드)를 핸들러(스테이지)에 전달하는 것이 일반적입니다.

  mutations: {
 increment (state, n) {
     state.count += n}}
 store.commit('increment', 10)

mutation-types: 공동 개발을 촉진하기 위해 상수를 별도의 파일에 넣습니다.

mutation-types.js

export const SOME_MUTATION = 'SOME_MUTATION'

store.js

import Vuex from 'vuex'
import { SOME_MUTATION } from './mutation-types'
  const store = new Vuex.Store({
    state: { ... },
    mutations: {
     // 我们可以使用 ES2015 风格的计算属性命名功能来使用一个常量作为函数名
    [SOME_MUTATION] (state) {
    // mutate state
  }
}
})

commit: 구성 요소에서 커밋을 사용하여 변형을 제출하거나 mapMutations 도우미 함수를 사용하여 구성 요소의 메서드를 store.commit 호출에 매핑할 수 있습니다. 루트 노드 저장소에 주입됨) this.$store.commit('xxx')

import { mapMutations } from 'vuex'
export default {
methods: {
  ...mapMutations([
    'increment' // 映射 this.increment() 为 this.$store.commit('increment')]),
  ...mapMutations({
    add: 'increment' // 映射 this.add() 为 this.$store.commit('increment')
  })}}

소스 코드 분석

function registerMutation (store, type, handler, path = []) {
 //4个参数,store是Store实例,type为mutation的type,handler,path为当前模块路径
    const entry = store._mutations[type] || (store._mutations[type] = 
[])  //通过type拿到对应的mutation对象数组
     entry.push(function wrappedMutationHandler (payload) {
     //将mutation包装成函数push到数组中,同时添加载荷payload参数    
     handler(getNestedState(store.state, path), payload)
     //通过getNestedState()得到当前的state,同时添加载荷payload参数
   })
 }

커밋: 돌연변이 호출

commit (type, payload, options) {
  // 3个参数,type是mutation类型,payload载荷,options配置
    if (isObject(type) && type.type) {
       // 当type为object类型,
      options = payload
      payload = type
      type = type.type
  }
 const mutation = { type, payload }
 const entry = this._mutations[type]
   // 通过type查找对应的mutation
 if (!entry) {
  //找不到报错
   console.error(`[vuex] unknown mutation type: ${type}`)
   return
 }
 this._withCommit(() => {
   entry.forEach(function commitIterator (handler) {
   // 遍历type对应的mutation对象数组,执行handle(payload)方法
   //也就是开始执行wrappedMutationHandler(handler)
     handler(payload)
   })
 })
 if (!options || !options.silent) {
   this._subscribers.forEach(sub => sub(mutation, this.state))
    //把mutation和根state作为参数传入
 }
}

구독자: 스토어의 돌연변이 구독

subscribe (fn) {
const subs = this._subscribers
if (subs.indexOf(fn) < 0) {
  subs.push(fn)
  }
return () => {
  const i = subs.indexOf(fn)
  if (i > -1) {
    subs.splice(i, 1)
    }
  }
 }

더 많은 프로그래밍 관련 지식을 보려면

프로그래밍 교육을 방문하세요! !

위 내용은 Vuex의 돌연변이를 이해하는 방법은 무엇입니까? 그것을 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 csdn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
vue.js and React의 미래 : 트렌드와 예측vue.js and React의 미래 : 트렌드와 예측May 09, 2025 am 12:12 AM

vue.js 및 React의 미래 추세와 예측은 다음과 같습니다. 1) vue.js는 엔터프라이즈 레벨 애플리케이션에서 널리 사용되며 서버 측 렌더링 및 정적 사이트 생성에서 획기적인 결과를 얻었습니다. 2) RECT는 서버 구성 요소 및 데이터 수집에서 혁신하고 동시성 모델을 더욱 최적화합니다.

Netflix의 프론트 엔드 : 기술 스택에 대한 깊은 다이빙Netflix의 프론트 엔드 : 기술 스택에 대한 깊은 다이빙May 08, 2025 am 12:11 AM

Netflix의 프론트 엔드 기술 스택은 주로 React 및 Redux를 기반으로합니다. 1. 반응은 고성능 단일 페이지 응용 프로그램을 구축하는 데 사용되며 구성 요소 개발을 통해 코드 재사용 성 및 유지 보수를 향상시킵니다. 2. Redux는 상태 변경이 예측 가능하고 추적 할 수 있도록 국가 관리에 사용됩니다. 3. 도구 체인에는 코드 품질과 성능을 보장하기위한 웹 팩, 바벨, 농담 및 효소가 포함됩니다. 4. 성능 최적화는 코드 세분화, 게으른로드 및 서버 측 렌더링을 통해 사용자 경험을 향상시킵니다.

vue.js 및 프론트 엔드 : 대화식 사용자 인터페이스 구축vue.js 및 프론트 엔드 : 대화식 사용자 인터페이스 구축May 06, 2025 am 12:02 AM

vue.js는 대화 형 사용자 인터페이스를 구축하는 데 적합한 점진적인 프레임 워크입니다. 핵심 기능에는 응답 시스템, 구성 요소 개발 및 라우팅 관리가 포함됩니다. 1) 응답 시스템은 Object.DefineProperty 또는 프록시를 통한 데이터 모니터링을 실현하고 인터페이스를 자동으로 업데이트합니다. 2) 구성 요소 개발을 통해 인터페이스를 재사용 가능한 모듈로 분할 할 수 있습니다. 3) Vuerouter는 단일 페이지 응용 프로그램을 지원하여 사용자 경험을 향상시킵니다.

vuejs의 단점은 무엇입니까?vuejs의 단점은 무엇입니까?May 05, 2025 am 12:06 AM

vue.js의 주요 단점은 다음과 같습니다. 1. 생태계는 비교적 새롭고 타사 라이브러리와 도구는 다른 프레임 워크만큼 풍부하지 않습니다. 2. 학습 곡선은 복잡한 기능에서 가파르게됩니다. 3. 지역 사회 지원과 자원은 반응과 각도만큼 광범위하지 않다. 4. 대규모 응용 프로그램에서 성능 문제가 발생할 수 있습니다. 5. 버전 업그레이드 및 호환성 문제가 더 큽니다.

Netflix : 프론트 엔드 프레임 워크를 공개합니다Netflix : 프론트 엔드 프레임 워크를 공개합니다May 04, 2025 am 12:16 AM

Netflix는 React를 프론트 엔드 프레임 워크로 사용합니다. 1. 반응의 구성 요소 개발 및 가상 DOM 메커니즘은 성능 및 개발 효율성을 향상시킵니다. 2. Webpack 및 Babel을 사용하여 코드 구성 및 배포를 최적화하십시오. 3. 성능 최적화를 위해 코드 세분화, 서버 측 렌더링 및 캐싱 전략을 사용하십시오.

vue.js의 프론트 엔드 개발 : 장점과 기술vue.js의 프론트 엔드 개발 : 장점과 기술May 03, 2025 am 12:02 AM

vue.js의 인기에는 단순성과 쉬운 학습, 유연성 및 고성능이 포함됩니다. 1) Progressive Framework 설계는 초보자가 단계별로 학습하는 데 적합합니다. 2) 구성 요소 기반 개발은 코드 유지 관리 및 팀 협업 효율성을 향상시킵니다. 3) 반응 형 시스템과 가상 DOM은 렌더링 성능을 향상시킵니다.

vue.js vs. React : 사용 편의성 및 학습 곡선vue.js vs. React : 사용 편의성 및 학습 곡선May 02, 2025 am 12:13 AM

vue.js는 사용하기 쉽고 부드러운 학습 곡선이 있으며 초보자에게 적합합니다. React는 더 가파른 학습 곡선을 가지고 있지만 유연성이 강하기 때문에 숙련 된 개발자에게 적합합니다. 1. vue.js는 간단한 데이터 바인딩 및 프로그레시브 디자인을 통해 쉽게 시작할 수 있습니다. 2. 반응은 Virtual DOM 및 JSX에 대한 이해가 필요하지만 유연성과 성능 이점이 높아집니다.

vue.js vs. React : 어떤 프레임 워크가 당신에게 적합합니까?vue.js vs. React : 어떤 프레임 워크가 당신에게 적합합니까?May 01, 2025 am 12:21 AM

Vue.js는 빠른 개발 및 소규모 프로젝트에 적합한 반면 React는 크고 복잡한 프로젝트에 더 적합합니다. 1.vue.js는 간단하고 배우기 쉽고 빠른 개발 및 소규모 프로젝트에 적합합니다. 2. 반응은 강력하고 크고 복잡한 프로젝트에 적합합니다. 3. vue.js의 진보적 인 특징은 점차적으로 기능을 도입하는 데 적합합니다. 4. React의 구성 요소 및 가상 DOM은 복잡한 UI 및 데이터 집약적 인 응용 프로그램을 처리 할 때 잘 수행됩니다.

See all articles

핫 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.