>  기사  >  웹 프론트엔드  >  Vue 애플리케이션에서 axios를 사용할 때 "null의 'xxx' 속성을 읽을 수 없습니다."라는 메시지가 나타나면 어떻게 해야 합니까?

Vue 애플리케이션에서 axios를 사용할 때 "null의 'xxx' 속성을 읽을 수 없습니다."라는 메시지가 나타나면 어떻게 해야 합니까?

王林
王林원래의
2023-08-19 17:37:041762검색

在Vue应用中使用axios时出现“Cannot read property 'xxx' of null”怎么办?

최근 몇 년 동안 프런트 엔드 프레임워크 Vue가 점점 더 대중화되었으며 Vue 애플리케이션에서 데이터 요청에 axios를 사용하는 것이 점점 더 일반화되고 있습니다. 그러나 axios를 사용할 때 "null의 'xxx' 속성을 읽을 수 없습니다."와 같은 오류가 발생할 수 있습니다. 이 오류는 명확한 프롬프트 메시지를 제공하지 않았기 때문에 많은 문제를 일으켰습니다. 이 오류의 원인과 해결 방법을 살펴보겠습니다.

먼저 이 오류의 의미에 대해 이야기해 보겠습니다. 일반적으로 이 오류는 Vue 구성 요소의 빈 객체에 대한 속성 액세스로 인해 발생합니다. 예를 들어 다음 코드는 다음과 같습니다.

<template>
  <div>{{user.name}}</div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      user: null
    }
  },
  created() {
    axios.get('/api/user')
      .then(res => {
        this.user = res.data
      })
      .catch(error => {
        console.log(error)
      })
  }
}
</script>

이 예에서는 초기 값이 null인 구성 요소의 데이터 옵션에 user 변수를 정의합니다. 생성된 후크 함수에서는 axios를 사용하여 사용자 데이터를 가져오고 해당 데이터를 사용자 변수에 할당하라는 요청을 보냅니다. 구성 요소 템플릿에서는 {{user.name}}을 사용하여 사용자 이름을 표시하지만 이로 인해 "null의 'name' 속성을 읽을 수 없습니다." 오류가 발생합니다.

그러면 이 실수를 피하는 방법은 무엇일까요? 두 가지 방법이 있습니다:

  1. v-if 지시어를 사용하여 객체가 비어 있는지 확인합니다. 비어 있으면 속성 액세스가 수행되지 않습니다.
<template>
  <div v-if="user">{{user.name}}</div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      user: null
    }
  },
  created() {
    axios.get('/api/user')
      .then(res => {
        this.user = res.data
      })
      .catch(error => {
        console.log(error)
      })
  }
}
</script>

이 예에서는 v-if 지시어를 사용합니다. 사용자를 결정하는 구성 요소 템플릿이 비어 있는지 여부, 비어 있으면 속성 액세스가 수행되지 않습니다. 이렇게 하면 위의 오류가 발생하지 않습니다.

  1. null을 방지하기 위해 개체에 대한 기본값 정의:
<template>
  <div>{{user.name}}</div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      user: {
        name: ''
      }
    }
  },
  created() {
    axios.get('/api/user')
      .then(res => {
        this.user = res.data
      })
      .catch(error => {
        console.log(error)
      })
  }
}
</script>

이 예에서는 구성 요소의 데이터 옵션에 기본값 {name: ''}을 사용하여 사용자 개체를 정의합니다. axios 요청이 실패하거나 null 개체를 반환하면 "null의 'name' 속성을 읽을 수 없습니다."라는 오류가 발생하지 않습니다.

요약하자면, Vue 애플리케이션에서 데이터 요청을 위해 axios를 사용할 때 "null의 'xxx' 속성을 읽을 수 없습니다."라는 오류가 발생할 수 있습니다. 이 오류의 원인은 빈 개체에 대한 속성 액세스로 인해 v-if 명령을 사용하여 이 오류를 방지하기 위해 개체에 대한 기본값을 정의하거나 판단할 수 있습니다.

위 내용은 Vue 애플리케이션에서 axios를 사용할 때 "null의 'xxx' 속성을 읽을 수 없습니다."라는 메시지가 나타나면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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