ホームページ  >  記事  >  ウェブフロントエンド  >  Vue アプリケーションで axios を使用するときに「null のプロパティ 'xxx' を読み取れません」というメッセージが表示された場合はどうすればよいですか?

Vue アプリケーションで axios を使用するときに「null のプロパティ 'xxx' を読み取れません」というメッセージが表示された場合はどうすればよいですか?

王林
王林オリジナル
2023-08-19 17:37:041764ブラウズ

在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>

この例では、コンポーネントのデータ オプションで変数 user を初期値 null で定義します。作成したフック関数では、axiosを使用してユーザーデータの取得リクエストを送信し、ユーザー変数にデータを代入します。コンポーネント テンプレートでは、ユーザー名を表示するために {{user.name}} を使用しますが、これにより「null のプロパティ 'name' を読み取れません」エラーが発生します。

では、この間違いを避けるにはどうすればよいでしょうか? 2 つの方法があります:

  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>

この例では、コンポーネントの data オプションで {name: のデフォルト値を定義します。 : ''} ユーザー オブジェクトなので、axios リクエストが失敗したり null オブジェクトを返した場合でも、「null のプロパティ 'name' を読み取れません」というエラーは発生しません。

要約すると、axios を使用して Vue アプリケーションでデータ要求を行うと、「null のプロパティ 'xxx' を読み取れません」というエラーが発生する可能性があります。このエラーの原因は、空のオブジェクトへの属性アクセスです。このエラーを回避するには、v-if 命令を使用して判断するか、オブジェクトのデフォルト値を定義します。

以上がVue アプリケーションで axios を使用するときに「null のプロパティ 'xxx' を読み取れません」というメッセージが表示された場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。