配列に格納されたデータを全件リストで表示しつつ、
そのデータを使ってboolean値が算出。
その結果を親コンポーネントで表示したいです。
親コンポーネントで取得したい条件としては、
デフォルトはfalse ただし、データから算出した結果に1つでもtrueがあればtrueにする
という内容です。
子コンポーネント側でも、自身の結果を表示します。
※イメージとしては、
ToDoリストがあり、データのなかに期日がある。
期日が全部未来だったら親コンポーネント的には何もおきないけど、
過去日のものが含まれていたらアラートを表示する
のような感じです。
ということで、下記よのうなコードを記載したのですが、
これって、例えばデータが100件あって、1個めでtrueが返ってきても、全件処理してしまうのがとてもムダに感じています。
なにか検知したらとめるような方法はないでしょうか?
※ リクエスト:
できれば、子コンポーネントごとの条件算出は子コンポーネントで行いたいです。
vue
1【parent】 2 3<template> 4 <p>{{ state }}</p> 5 6 <el-child 7 v-for = "item in items" 8 :data = data 9 @catchChildState = "changeState" 10 /> 11</template> 12 13<script> 14export default { 15 data() { 16 return { 17 states: [], 18 state: false, 19 data: いくつか情報の入ったオブジェクト 20 } 21 } 22 methods { 23 changeState(d) { 24 this.states.push(d) 25 this.state = this.states.some(val => val == true); 26 } 27 } 28} 29</script> 30
vue
1【child】 2 3<template> 4 <div> 5 データの表示 6 {{ state }} 7 </div> 8</template> 9 10 11<script> 12export default { 13 props: ['data'], 14 data() { 15 return { 16 state: false 17 } 18 }, 19 mounted() { 20 if (dataを使ってなにか条件式) { 21 this.state = true; 22 } else { 23 this.state = false; 24 } 25 this.$emit('catchChildState', this.state); 26 } 27} 28</script> 29
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。