>  기사  >  웹 프론트엔드  >  Vue 애플리케이션에서 vuex를 사용할 때 "TypeError: 정의되지 않은 'xxx' 속성을 읽을 수 없습니다" 문제를 해결하는 방법은 무엇입니까?

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

WBOY
WBOY원래의
2023-08-18 21:24:272054검색

在Vue应用中使用vuex时出现“TypeError: Cannot read property 'xxx' of undefined”怎么解决?

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

이 문제의 해결 방법도 매우 간단합니다. 일반적으로 이 오류는 Vuex 값이 올바르게 초기화되지 않아 발생하므로 변수를 초기화해야 합니다. 다음은 두 가지 예입니다.

1. 구성 요소에서 VueX 사용

<template>
  <div>
    <p>{{ name }}</p>
  </div>
</template>

<script>
  import { mapState } from 'vuex';
  
  export default {
    computed: {
      ...mapState(['name'])
    }
  }
</script>

위 코드를 코드에 사용했지만 "name" 속성이 Vuex Store에 정의되어 있지 않으면 "TypeError"라는 오류가 보고됩니다. : 정의되지 않은 'name' 속성을 읽을 수 없습니다. "이 문제를 해결하려면 Vuex Store에 name 속성을 추가하고 초기화하기만 하면 됩니다.

2. Vuex Store에서 변수 초기화

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    name: '' // 需要先进行初始化
  },
  mutations: {
    SET_NAME(state, name) { //进行更改,并重新赋值
      state.name = name
    }
  },
  actions: {
    setName({commit}, name) { //dispatch对应的方法
      commit('SET_NAME', name)
    }
  },
  getters: {
    name: (state) => {
      return state.name //getters同样需要返回一个指定的属性
    }
  }
})

export default store

위 코드에서는 빈 문자열만 선언하는 "name" 속성을 초기화합니다. 이런 식으로 호출할 때 "TypeError: 정의되지 않은 'name' 속성을 읽을 수 없습니다."라는 오류가 나타나지 않습니다.

요약하자면 이 오류는 매우 흔하지만 해결 방법도 매우 간단합니다. 애플리케이션에서 Vuex 변수를 올바르게 초기화하기만 하면 됩니다. 이렇게 하면 올바른 값을 얻고 Vuex를 더 잘 사용할 수 있습니다.

위 내용은 Vue 애플리케이션에서 vuex를 사용할 때 "TypeError: 정의되지 않은 'xxx' 속성을 읽을 수 없습니다" 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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