質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3982閲覧

Vue.jsのwarningの解消方法を教えてください

souta-haruran

総合スコア88

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/08/07 14:01

###Vue.jsに関するwariningの解消方法について
Vue.jsで勉強を目的とした簡単なアプリケーションを作っています。
その過程で、開発者ツールのコンソールでwarningが表示され、それを解消しようと試みますが、解消されません。

実現したいこと

warningを解消したい。

###発生している問題・エラーメッセージ

[Vue warn]: Invalid prop: type check failed for prop "value". Expected Boolean, got String with value "これはテストです".

###該当のソースコード

vue

1<!-- alert.vue --> 2 3<!-- アラート --> 4<template> 5 <div> 6 <v-alert 7 v-model="alertMessage" 8 outlined 9 :type="type" 10 :color="color" 11 dismissible 12 >{{ alert }}</v-alert> 13 </div> 14</template> 15 16<script> 17export default { 18 name: 'Alert', 19 props: { 20 alert: String, 21 color: String, 22 index: Number, 23 type: String 24 }, 25 computed: { 26 alertMessage: { 27 get() { 28 return this.alert; 29 }, 30 set() { 31 if (this.$listeners && this.$listeners.removeAlert) { 32 this.$emit('removeAlert', { 33 type: this.type, 34 index: this.index, 35 }); 36 } 37 }, 38 }, 39 } 40}; 41</script> 42

vue

1<!-- input.vue --> 2<template> 3 <div class="input"> 4 <alert 5 v-for="(alert, index) in alerts.error" 6 type="error" 7 :key="`error${index}`" 8 :alert="alert" 9 :index="index" 10 @removeAlert="removeAlert" 11 ></alert> 12 </div> 13</template> 14 15<script> 16import { mapActions, mapState } from 'vuex'; 17import Alert from '@/components/common/alert'; 18 19export default { 20 name: 'Input', 21 computed: { 22 ...mapState('alert', [ 23 'alerts', 24 ]) 25 }, 26 mounted() { 27 this.load(); 28 }, 29 methods: { 30 ...mapActions('alert', [ 31 'addAlert', 32 'removeAlert' 33 ]), 34 load() { 35 this.addAlert({ type: 'error', message: 'これはテストです' }); 36 } 37 }, 38 components: { 39 Alert 40 } 41}; 42</script>

javascript

1const ADD_ALERT = 'ADD_ALERT'; 2const REMOVE_ALERT = 'REMOVE_ALERT'; 3const CLEAN_ALERT = 'CLEAN_ALERT'; 4 5export default { 6 namespaced: true, 7 state: { 8 alerts: { 9 success: [], 10 error: [], 11 }, 12 }, 13 actions: { 14 addAlert({ commit }, { type, message }) { 15 commit(ADD_ALERT, { type, message }); 16 }, 17 removeAlert({ commit }, { type, index }) { 18 commit(REMOVE_ALERT, { type, index }); 19 }, 20 cleanAlert({ commit }) { 21 commit(CLEAN_ALERT); 22 } 23 }, 24 mutations: { 25 [ADD_ALERT](state, payload) { 26 const { type, message } = payload; 27 state.alerts[type].push(message); 28 }, 29 [REMOVE_ALERT](state, payload) { 30 const { type, index } = payload; 31 state.alerts[type].splice(index, 1); 32 }, 33 [CLEAN_ALERT](state) { 34 state.alerts = { 35 success: [], 36 error: [], 37 }; 38 } 39 }, 40}; 41

###試したこと
warningではpropsの型としてboolean型ではないというものなので、Vue.jsの公式やその他記事を確認し、propsの型指定など試してみました。
input.vueの中になるコードthis.addAlert({ type: 'error', message: 'これはテストです' });ここのこれはテストですtrueなど、booleanの型にすると、warningは解消されることは確認済みです。

現状

目的としてはアラートを出したいので、文字列を渡したいので、this.addAlert({ type: 'error', message: 'これはテストです' });この形で行きたいと思っています。
ただし、そうするとやはりwarningが出てしまい解消に至りません。

どのように解消するべきか、お分かりの方がいれば教えてください。

###補足情報(言語/FW/ツール等のバージョンなど)
Vue.js / Vuex / Vuetify

Vue.jsのバージョン 2.6.11
Vuexのバージョン 3.5.1
Vuetifyのバージョン 2.3.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

警告メッセージが表示されるのは、v-alertコンポーネントのv-modelに文字列を指定しているためです。
v-modelにはboolean型の値を指定します。trueだとアラートを表示、falseだと非表示になります。

vue

1<v-alert 2 v-model="alertMessage" 3 outlined 4 :type="type" 5 :color="color" 6 dismissible 7 >{{ alert }}</v-alert>

警告メッセージを解消するにはv-model="..."の記述を削除するか(アラートの状態を管理する必要がなければ)、v-modelにboolean型のpropsを指定します(アラートの状態を管理する必要があれば)。

vue

1<v-alert 2 outlined 3 :type="type" 4 :color="color" 5 dismissible 6 >{{ alert }}</v-alert>

具体的なコードはオフィシャルサイトのドキュメントにありますのでご確認ください。
Twitter アラート

投稿2020/08/07 18:43

rubytomato

総合スコア1752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

souta-haruran

2020/08/08 06:52

ありがとうございました! > v-modelにはboolean型 なるほど、勉強不足でした。 この経験を踏まえ学習します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問