Getters -ийг ашиглах

Төслийн нэгдсэн хадгалагчид програмын төлвүүдийг state -д үүсгэн ашиглахыг сурсан тул vuex -ийн дараагийн боломжийг судалцгаая. Одоогоор төслийн Actions компонентод байрлах товчнууд дээр дарах үйл явцын боловсруулагч state -д тодорхойлогдсон counter талбарын утгыг өөрчилнө. Харин Counter компонент state -ээс counter талбарыг аван темлейтдээ үзүүлж байгаа. Төсөлд бас нэгэн компонентийг нэмээд түүн дээр vuex -ийн дараагийн боломжийг судлая. Үүний тулд төслийн components хавтаст Counter компоненттой ижилхэн

<template>
  <h2>Тоолуур 2: {{counter}}</h2>
</template>

<script>
export default {
  computed: {
    counter() {
      return this.$store.state.counter
    }
  }
}
</script>

кодтой SecondCounter.vue файлыг үүсгэе.

Компонентуудыг ялгахын тулд Тоолуур 1: , Тоолуур 2: гэсэн текстийг үзүүлэхээр болгоё. Дараа нь шинээр үүсгэсэн компонентийг App компонентод

<template>
  <div class="container text-center pt-5">
    <app-counter></app-counter>
    <app-second-counter></app-second-counter>
    <hr>
    <app-actions></app-actions>
  </div>
</template>

<script>
import Counter from '@/components/Counter.vue'
import Actions from '@/components/Actions.vue'
import SecondCounter from '@/components/SecondCounter.vue'

export default {
  components: {
    appCounter: Counter,
    appActions: Actions,
    appSecondCounter: SecondCounter
  }
}
</script>

импортлон аваад компонентийн хэвд харуулна. Өөрчлөлтийг хадгалаад төслийг хөтөч дээр нээвэл

vue10_03_01

гэж харагдана. Тоолуурыг нэмэх, хасах товчнуудыг дарвал програмын логикийн дагуу

vue10_03_02

тоолууруудын утга зэрэг өөрчлөгдөнө. Програмын хэвд тоолуурын утгыг харуулах биш түүнээс хамаарсан тооцооллыг утгыг харуулах хэрэгтэй боллоо гэж үзье. Жишээ нь

return this.$store.state.counter  * (10 - 1 + 3) * 5

үйлдэл хийх хэрэгтэй болсон гэе. Дээрх үйлдлийг Counter , SecondCounter компонентуудын counter тооцооглогдох шинжээс буцаах утгуудад тавиад програмын ажиллагааг шалгавал

vue10_03_03

програм хэвийн ажилах ч асуудал үлдсэн. Учир нь төслийн Counter , SecondCounter компонентуудад кодын давхардал бий болсон. Хэрвээ store нэгдсэн хадгалагчид энэ үйлдлийг хийгээд үүний дараа компонентуудад өгдөг байвал компонентууд програмын логик ажиллагаанд оролцохгүйн дээр кодын давхцал байхгүй болохоор. Яг ийм зорилгод тохирох getter гэж нэрлэдэг механизм store нэгдсэн хадгалагчид байдаг. getter -ийг store нэгдсэн хадгалагчид

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    counter: 10
  },
  getters: {
    computedCounter(state) {
      return state.counter * (10 - 1 + 3) * 5
    }
  }
})

гэж тодорхойлно. Vuex.Store -д дамжуулах тохиргооны обьектод state талбараас гадна getters талбарыг тодорхойлон өгч болно. getters функцуудын обьектоор тодорхойлогдоно. Дээрх өөрчлөлтөөр getterscomputedCounter функцийг тодорхойлон өгсөн. getters -ийн функцууд компонентоос хандан авч болох ямар нэгэн өгөгдлийг буцаах ёстой. Эндээс getters -т зарлагдсан функцуудэд state -д тодорхойлогдсон шинжүүдэд ямар нэгэн үйлдлийг хийгээд үүний дараа үр дүнг компонентод өгөх боломж гарч ирнэ. Энэ бол манай зорилго. Функц state -д үйлдэл хийх тул түүнийг оролтын параметрээр авна. Ингэснээр getters -ийн функцууд state -ийн дурын талбарт хандах боломжтой болох тул бид компонентуудад хийгдэж байсан үйлдлийг computedCounter функцэд хийгээд буцаана. Одоо Counter , SecondCounter компонентууд state -ийн counter талбарт хандан тооцоолол хийхгүйгээр getters -ийн computedCounter

...
<script>
export default {
  computed: {
    counter() {
      return this.$store.getters.computedCounter
    }
  }
}
</script>

this.$store.getters.computedCounter гэж хандахад болно. Энд тооцоологдох шинжийн зарчимтай төстэй жижигхэн онцлог байгааг харсан байх. getters -т тодорхойлогдсон computedCounter нь функц боловч кодоос түүнд функц байдлаар биш ердийн шинж хэлбэрээр хандана. Өөрөөр хэлбэл computedCounter() гэж биш зүгээр л нэрээр нь computedCounter ханддаг. Харин Vuex үүнийг ойлгон computedCounter функцийг ажлуулан түүнээс буцаах утгыг өгнө. Кодын өөрчлөлтийг Counter , SecondCounter компонентуудад хийгээд төслийн компиляцийг хийгээд хөтөч дээр нээгээд

vue10_03_04

товчнууд дээр дарахад тоолууруудын утгуудад computedCounter тооцоолол хийн програм хэвийн ажиллана. Жишээ нь тоолуурын анхдагч утга, түүнд хийгдэх тооцооллын алгоритм

export default new Vuex.Store({
  state: {
    counter: 1
  },
  getters: {
    computedCounter(state) {
      return state.counter * 5
    }
  }
})

өөр боллоо гэхэд бид компонентуудын кодод хүрэхгүйгээр зөвхөн Vuex.Store тохиргооны обьектын тодорхойлолтыг засахад л хангалттай. Өөрчлөлтийг хадгалаад хуудсаа нээвэл програм

vue10_03_05

өөрчлөлтийн дагуу хэвийн ажиллана. Vuex -ийн getters механизм програмын логикоос компонентуудыг чөлөөлөн кодын давхцалгүй болгож байгаа энэхүү давуу талыг ашиглахыг сайн аргачлал гэж үздэг тул сайтар ойлгон програмдаа ашиглаж байхыг зөвлөе.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 976 Нийтийн

Програмчлалын хэлүүдэд хэрэглэгчийн зүгээс үүсгэх үйл явц, түүний боловсруулалт чухал байр эзэлдэг. Үйл явцын боловсруулалтад модификаторийг ашиглан кодыг хэрхэн хураангуй болгохыг Үйл явцын модификаторууд хичээлээс мэдсэн Энэ удаад үйл явцын модификаторын бас нэг боломжийг

    <body>
        <div id="app">
            <input type="text" v-on:keyup="alertValue">
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script>
            new Vue({
                el: '#app',
                methods: {
                    alertValue: function() {
                        if (event.keyCode === 13)
                            alert(event.target.value)
                    }
                }
            })
        </script>
    </body>

код дээр харцгаая. Хуудаст хэрэглэгчээс өгөгдөл авах input элемент байрлан түүнд товч дарагдах үйл явцыг v-on:keyup атрибут alertValue боловсруулагчтайгаар сонсохоор заасан.

  Нээгдсэн тоо: 1466 Бүртгүүлэх

Javascript хэлний үндсэн үүргийн нэг бол хэрэглэгч талын хуудаст динамик байдлыг үүсгэн програмтай харьцах ажиллагааг илүү уян хатан, хөнгөн, эвтэйхэн болгох юм. Html хуудас дээрх сонголтуудаас боломжит сонголтуудыг хийхдээ CheckBox элементийг ашигладаг бол сонголтуудаас боломжит нэгийг сонгохыг Радио товчоор хийдэг. Жишээ нь бүртгэлийн хуудаст хэрэглэгчийн хүйсийн сонголтыг хийх гэх мэт. Үүнийг VueJs -дээр checkbox -той төстэйгөөр хэрэгжүүлдэг тул CheckBox хичээлийн

<template>
  <div>
    <h2>Form inputs</h2>
    <label>
      <input type="radio"> instagram
    </label>
    <label>
      <input type="radio"> twitter
    </label>    
    <label>
      <input type="radio"> facebook
    </label>    

  </div>
</template>

<script>
export default {
  data () {
    return {
    }
  }
}
</script>

жишээний input тегийн төрлийг radio болгоод програмыг ажлуулан хуудасны ажиллагааг шалгавал

  Нээгдсэн тоо: 1439 Төлбөртэй

Роутерийг тохируулах хичээлээр төсөлд Home, Cars хуудсуудыг үүсгэн чиглүүлэгчийг тохируулан бүртгүүлсэн хэдий ч хуудас хооронд шилжихдээ хаягийн мөрөнд шууд бичин өгч байгаа. Иймээс хуудас хоорондын шилжилтийг цэс үүсгэн түүгээр дамжуулан хийе. Та Формын шалгалтын бэлтгэл хичээлийг үзсэн бол төсөлд Bootstrap -ийг суулгасан гэдгийг мэдэж байгаа.

  Нээгдсэн тоо: 382 Бүртгүүлэх

react компонентийн амьдалын суурь циклүүдийн сүүлийнх нь componentWillUnmount юм. Аргыг Car компонентод

   componentWillUnmount() {
    console.log('Car componentWillUnmount')
  }

нэмэн тодорхойльё. Арга хэзээ дуудагдахыг нэрнээс нь ойлгосон гэж бодож байна. componentWillUnmount арга компонентыг устган түүнийг DOM -оос хасах үед дуудагдана. Аргын ажиллагааг харахын тулд хөтөч дээр хуудсаа нээгээд машиний жагсаалтыг

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 339

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 429

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 399

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 479

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 555

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 543

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 664

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 780

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 797

 
Энэ долоо хоногт

Нээгдсэн тоо : 1617

 

[-252; 299) завсарт орших 18 -д үлдэгдэлгүй хуваагдах тоонуудын нийлбэрийг ол.

Нээгдсэн тоо : 1049

 

тэгшитгэлийг бод.

Нээгдсэн тоо : 273