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 механизм програмын логикоос компонентуудыг чөлөөлөн кодын давхцалгүй болгож байгаа энэхүү давуу талыг ашиглахыг сайн аргачлал гэж үздэг тул сайтар ойлгон програмдаа ашиглаж байхыг зөвлөе.

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

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

Хичээлээр директивийн боломжуудыг хэрхэн өргөжүүлэхийг авч үзье. Эхлээд төслийн кодыг багахан цэгцлэе. Хичээлд Өөрийн директив үүсгэх , Директивийн амьдралын цикл хичээлийн жишээг ашиглах тул хичээлүүдийг үзэхийг зөвлөе. Директивийн амьдралын циклийг шалгахаар App компонентод нэмсэн товчнуудыг хасан

<template>
  <div>
      <h2 v-colored>{{ title }}</h2>
  </div>
</template>

<script>
export default {
  data () {
    return {
      title: "Hello I am Vue!"
    }
  }
}
</script>

кодтой болгосон.

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

Javascript дээр бичигдсэн RxJs сан нь програмчлалыг рейктив /reactive/ аргачлалаар боловсруулахад зориулагдсан. RxJs санг ашиглан массив, мөрүүд, тоонууд, промис /promise/, үйл явцууд /event/ гэх мэтийн өгөгдлийн төрлүүдээс гадна дурын синхрон зүйлүүдтэй амархан харьцан ажиллах боломжтой. Стримүүдийг нэгтгэх I хичээлд RxJs санг ашиглан өөр стримүүдийг нэг стримд нэгтгэх аргуудтай танилцаж ба энэ хичээлээр аргуудыг үргэлжлүүлэн авч үзнэ.

concatMap арга

Арга mergeMap аргатай тун адилхан. Аргыг ажиллагааг

Rx.Observable.range(1, 5)
    .concatMap((x, i) => {
        return Rx.Observable.interval(100)
            .take(x)
            .map(c => i)
    })
    .subscribe(createSubscribe('concatMap'));

кодоос харцгаая.

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

Хичээлээр төслийн үндсэн хуудсыг зохиоё. Эхлээд төслийн src хавтаст өөрийн төлөв бүхий төслийн хэмжээнд суурь болох компонентуудийг хадгалах containers хавтасыг үүсгэе. Үүний зэрэгцээ функционал компонентуудийг хадгалах components хавтасыг бас үүсгэн өгье. containers хавтаст Quiz хавтасыг үүсгээд түүнд

Классийн компонентийн код

import React, { Component } from "react";

class Quiz extends Component {
  render() {
    return (
      <div>
        <h3>Сорилго</h3>
      </div>
    );
  }
}

export default Quiz;

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

Зарим төрлийн бодлогыг бодоход нэг ижил үйлдлүүдийг олон дахин давтах тохиолдол гардаг. Практикт ийм төрлийн ажиллагааг циклээр шийдвэрлэнэ. Цикл гэдэг нь дараалсан үйлдлүүдийг тодорхой тоогоор давтан гүйцэтгэхийг хэлнэ. JavaScript -д хоёр төрлийн циклийн оператор байдаг.

  • Урьдчилсан нөхцөлтэй цикл
  • Параметртэй цикл

while оператор

while нь урьдчилсан нөхцөлт циклийн оператор болно. Тухайн оператор циклийн нөхцлийг биелэгдэхгүй болох хүртэл үйлдлүүдийг давтан хийдэг.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

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

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

 

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

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

 

Зурагт өгөгдсөн дотоод байдлаараа шүргэлцсэн хоёр тойргийн TA нь ерөнхий шүргэгч, TC нь том тойргийн огтлогч, жижиг тойргийн шүргэгч болно. DC=3, CB=2 бол TA -г ол.

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