###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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/08 06:52