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

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

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

Програмийг удирдах цэсийг нээх болон хаах ажиллагааг хариуцах компонентийг боловсруулъя. Үүний тулд төслийн components хавтаст Navigation хавтасыг үүсгээд түүн дотор цэсний шилжилтийн компонентийн MenuToggle хавтасыг үүсгээрэй. Компонентийн хавтаст

import React from "react";
import classes from "./MenuToggle.module.css";

const MenuToggle = (props) => {
  const cls = [classes.MenuToggle, "fa"];
  if (props.isOpen) {
    cls.push("fa-times");
    cls.push(classes.open);
  } else {
    cls.push("fa-bars");
  }

  return <i className={cls.join(" ")} onClick={props.onToggle} />;
};

export default MenuToggle;

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

React компонентод тулгуурласан тул програмийн бүх элементүүд компонентуудын харьцаа байдаг тул компонентод параметр дамжуулан удирдах зайлшгүй шаардлага гарч ирнэ. Энэ тухай Компонент гэж юу болох хичээлээр өнгөцхөн үзсэн бөгөөд энэ хичээлээр сэдвийг илүү гүнзгийрүүлэн авч үзье.

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

Интернетэд сууриласан програмчлал хөгжихийн хирээр хэрэглэгчдийн шаардлага улам өндөр болсон. Хөтөч сервер хооронд хуудсыг дамжуулан дахин зурах, формын шалгалт, хуудас шилжилт зэрэг серверт олон удаа хандах ажиллагаануудад хэрэглэгчид нилээд дургүй байдаг. Эдгээр асуудлыг шийдэхийн тулд SPA буюу нэг хуудаст програмын технологийг Angular, React, Vue зэрэг фреймворкууд хэрэгжүүлдэг. Фреймворкуудийн ажиллагааны зарчим ойролцоо тул аль нэгийг нь судалсан байхад бусад нь ойлгомжтой. Иймээс сайтад Vue фреймворкийн хичээлүүдийг оруулж байгаа билээ.

Энэ удаад Html хуудас дээрх сонголтуудаас тохирохыг нь зөвлөх тэмдэглэгээ хийдэг CheckBox гэж нэрлэдэг элементийн тухай авч үзье. Жишээ нь бүртгэлийн хуудаст хэрэглэгчийн сонирхдог зүйлсийг тодорхой төрлүүдээс сонгох байдлаар ихээр авдаг. Үүнийг VueJs -дээр хэрхэн хэрэгжүүлэхийг

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

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

жишээгээр харцгаая.

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

Техник технологийн хөгжлийн үрээр бүхий л зүйл өөрчлөгдөн шинэчлэгдэж байдаг. Энэ үзэгдэл мэдээллийн технологийн салбарт бүр ч илүү хурдтай явдагийг бүгд мэднэ. Иймээс энэ салбарт ажиллаж буй мэрэгжилтэнүүд болон ажиллахаар бэлтгэгдэж байгаа залуусын хамгийн эхний зорилт бол хөгжлөөс хоцрохгүй байх юм. Сүүлийн жилүүдэд javascrip хэл маш хурдацтай хөгжин түүнийг програм зохиох ажилд улам өргөнөөр ашиглах болсон тул хэлийг сурч хөгжилтэй нь хөл нийлүүлэхэд туслах зорилгоор ES6 хэлний циклд шинээр нэмэгдсэн зүйлийн талаар энэ хичээлээр үзье.

Циклийн боломжийг дараах

const array = [1, 2, 3, 4, 5];

массиваар авч үзье. Дээрх массивын элементүүдийг консолд гаргахад өмнө хоёр аргыг ашиглаж болдогийн нэг бол for циклийг

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

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

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

 

илэрхийллийн утгыг ол.

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

 

Хажуу тал нь 17 см адил хажуут трапец 15 см диаметртэй тойргийг багтаасан бол трапецийн сууриудын үржвэр хэд вэ?

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