#やりたいこと
input type="range" を使って、音楽プレイヤーのシークバーを作っています。
曲の進行とともにつまみが移動し、つまみを移動しても曲を進めたり戻したりできるよう実装しています。
曲の進行とともにつまみが移動し、つまみを移動しても曲を進めたり戻したりはできるのですが、
下記のようなエラーが出て、propsで受け取った値を変更するなとエラーが出るので、解消したいです。
#できないこと
エラーをググり、いくつかのサイトをみて、
propsで受け取った値を子コンポーネントで別の変数に入れるという対処法が多くみられたので実践してみましたが、受け取った変数を別名の変数に入れようとすると値がはいりません
#エラー中のコード
Player.vue
1<input v-model="currentSecTime" min="0" :max="duration" type="range" @input="changePrg" /> 2 3<script> 4export default{ 5 props:{ 6 currentSecTime 7 } 8</script>
#エラー
[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated
#エラー後に修正したコード
Player.vue
1<input v-model="currentSecondTime" min="0" :max="duration" type="range" @input="changePrg" /> 2 3<script> 4export default{ 5 props:{ 6 currentSecTime 7 }, 8 data(){ 9 currentSecondTime: this.currentSecTime 10 } 11</script>
こちらのコードを書いても、エラーも消えず、曲の進行とともに進んでいたシークバーのつまみも動かなくなり、つまみを動かしても曲は進みも戻りもしませんでした。
devtoolで確認しましたが、currentSecTimeの受け取りまではできているようで、現在の曲の位置の数字は出ています。
#環境
- npm 6.13.4
- node 12.16.1
- Nuxt.js
- chorome
- Mac
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/30 07:08
2020/04/30 08:02