Vue は、開発者がインタラクティブなフロントエンド アプリケーションを迅速に構築するのに役立つ、非常に人気のある JavaScript フレームワークです。しかし、Vue で開発していると、「TypeError: Cannot read property 'XXX' of unknown」というエラーや例外が頻繁に発生します。
このエラーは通常、未定義または存在しないプロパティにアクセスしようとすると発生します。 Vue 開発では、さまざまな状況でこの問題が発生する可能性があります。この記事では、このエラーが発生するいくつかの一般的な状況とその対処方法を紹介します。
まず第一に、テンプレート内の未定義のプロパティにアクセスすることによってエラーが発生する可能性があります。たとえば、未定義のデータ プロパティが Vue コンポーネントのテンプレートで使用されています。
<template> <div>{{ obj.prop }}</div> </template> <script> export default { data() { return { obj: {} } } } </script>
この例では、 obj
のプロパティ prop
が unknown の場合、 TypeErrorエラーが発生します。この問題を解決するには、テンプレートで v-if または v-show ディレクティブを使用して、属性が存在するかどうかを判断できます。
<template> <div> <div v-if="obj.prop">{{ obj.prop }}</div> <div v-else>属性不存在</div> </div> </template>
この方法では、obj# の属性に関係なく、
##prop が存在しても存在しなくても、TypeError は発生しません。
<template> <div> <div v-if="dataLoaded">{{ data.prop }}</div> <div v-else>数据加载中...</div> </div> </template> <script> export default { data() { return { dataLoaded: false, data: {} } }, created() { // 异步请求数据 fetchData().then((res) => { this.data = res.data; this.dataLoaded = true; }) } } </script>
dataLoaded データを表示するには、true に設定します。それ以外の場合は、「データをロードしています...」というプロンプト メッセージが表示されます。
<template> <div> <child-component v-if="dataLoaded" :data="data"></child-component> <div v-else>数据传递中...</div> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { dataLoaded: false, data: {} } }, created() { // 异步请求数据 fetchData().then((res) => { this.data = res.data; this.dataLoaded = true; }) } } </script>
dataLoaded 子コンポーネントをレンダリングするには true に設定されます。それ以外の場合は、「データを転送中です...」というプロンプト メッセージが表示されます。
以上がTypeError の対処方法: Vue 開発で発生した未定義のプロパティ 'XXX' を読み取れませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。