ホームページ > 記事 > ウェブフロントエンド > Vue アプリケーションで axios を使用するときに「null のプロパティ 'xxx' を読み取れません」というメッセージが表示された場合はどうすればよいですか?
近年、フロントエンド フレームワーク 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 つの方法があります:
<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 ディレクティブを使用してユーザーが空かどうかを判断し、空の場合は属性アクセスは実行されません。こうすることで上記のエラーは発生しなくなります。
<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 サイトの他の関連記事を参照してください。