Холбоосын параметрүүд

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох цэс бусдаасаа ялгагдахгүй байгаа нь сайнгүй. 
Үнэхээр / чиглүүлэгч нүүр хуудас буюу http://localhost:3000/ хаягаар нүүр хуудасыг үзүүлж байхад

r_07_02_01

кодийн a тегээр тодорхойлогдсон Нүүр холбоост ямар нэгэн атрибут байхгүй байгаа нь харагдана. 

Тэгвэл react-router-dom сангаас NavLink компонентийг импортлоод

          <ul>
            <li>
              <NavLink to="/">Нүүр</NavLink>
            </li>
            <li>
              <NavLink to="/about">About</NavLink>
            </li>
            <li>
              <NavLink to="/cars">Cars</NavLink>
            </li>
          </ul>

цэсний тодорхойлолтын Link -ийг NavLink -ээр соливол

r_07_03_01

NavLink компонент сонгогдсон цэст active классийг динамикаар нэмнэ. Одоо active классаар сонгогдсон цэсийг хэвжүүлэх боломжтой болсон тул Layout компонентийн хэвжүүлэлтийн Layout.scss файлд 

.nav {
  ul {
    display: flex;
    justify-content: center;
    align-items: center;
    list-style: none;
    margin: 0;
    padding: 20px;

    li {
      margin-right: 15px;

      a.active {
        font-weight: bold;
        color: red;
      }
    }
  }
}

active классийг тодорхойлон өгвөл сонгогдсон цэсний

r_07_03_02

фонт томрон улаан өнгөөр харагдана. NavLink компонент цэст нэмсэн active классаас өөр классийг идэвхитэй цэст нэмэх хэрэгтэй бол яах вэ? Layout.scss файлд тодорхойлсон a.active классийн нэрийг a.active-link болгон өөрчилбөл NavLink компонент цэст active классийг нэмэх ч active-link классийг олж харахгүй. active-link классийг цэсний тодорхойлолтод className атрибутаар

        <nav className="nav">
          <ul>
            <li>
              <NavLink to="/" className={({ isActive }) => (isActive ? "active-link" : "")}>
                Нүүр
              </NavLink>
            </li>
            <li>
              <NavLink to="/about" className={({ isActive }) => (isActive ? "active-link" : "")}>
                About
              </NavLink>
            </li>
            <li>
              <NavLink to="/cars" className={({ isActive }) => (isActive ? "active-link" : "")}>
                Cars
              </NavLink>
            </li>
          </ul>
        </nav>

оруулан ирнэ. className атрибут мөрөөс гадна функцийг авч болох бөгөөд функцэд автоматаар дамжуулдаг обьектоос холбоос идэвхитэй эсэхийг заадаг isActive түлхүүртэй талбар байдагийг бүтцийн задаргаагаар аван параметрээр дамжуулсан. Эргэн дуудалтын функцэд ирэх isActive талбарын утгаас хамааран холбоост active-link классийг нэмсэн. Өөрчлөлтийг хадгалаад хуудасны ажиллагааг шалгавал идэвхитэй цэсийг active-link классаар хэвжүүлнэ. Шалгаад үзээрэй. Кодод давталт гарч байгаа тул эргэн дуудалтын функцийг тусдаа setActive тогтмолд 

  render() {
    const setActive = ({ isActive }) => (isActive ? "active-link" : "");
    return (
      <div>
        <nav className="nav">
          <ul>
            <li>
              <NavLink to="/" className={setActive}>
                Нүүр
              </NavLink>
            </li>
            <li>
              <NavLink to="/about" className={setActive}>
                About
              </NavLink>
            </li>
            <li>
              <NavLink to="/cars" className={setActive}>
                Cars
              </NavLink>
            </li>
          </ul>
        </nav>
    ...

олгоод className атрибутуд setActive -ийг заан өгье. Олон ашиглагдах хэсгийг тусд нь гаргах энэ аргачлалыг тогтмол ашиглахыг зөвлөе. Өөрчлөлтийг хадгалаад хуудасны ажиллагааг шалгавал бүгд хэвийн ажиллана. Холбоост хэвжүүлэлтийн параметрийг style атрибутаар дамжуулан 

  render() {
    ...
    const setStyle = ({ isActive }) => ({color: isActive ? "green" : "black", });
    return (
      <div>
        <nav className="nav">
          <ul>
            <li>
              <NavLink to="/" style={setStyle}>
                Нүүр
              </NavLink>
            </li>
            <li>
              <NavLink to="/about" style={setStyle}>
                About
              </NavLink>
            </li>
            <li>
              <NavLink to="/cars" style={setStyle}>
                Cars
              </NavLink>
            </li>
          </ul>
        </nav>
    ...

хийсэн ч болдог. Өөрчлөлтийн дараа сонгодсон цэс ногоон өнгөтэй болон харагдана. 
Үүний зэрэгцээ NavLink компонентийн to параметрт тохиргоо хийж болно. Жишээ нь машинуудын жагсаалтыг үзүүлэх цэсний тодорхойлолтын 

...
            <li>
              <NavLink
                to={{ pathname: "/cars", search: "?a=1&b=2", hash: "hash" }}
                style={setStyle}
              >
                Cars
              </NavLink>
            </li>
...

to параметрт мөр биш обьектийг дамжуулъя. Обьектийн pathname талбарт чиглүүлэгчийн замыг, search талбарт замын араас get параметрээр нэмэгдэх мөрийг, hash талбарт ямар нэгэн хэш тэгийг өгсөн. Өөрчлөлтийг хадгалаад хуудсаа нээгээд cars цэсээр орвол

r_07_03_03

хаягийн мөр to параметрт дамжуулсан обьектын талбаруудыг агуулна.

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

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

Өмнөх хичээлүүдийн кодод директивүүдийг ашиглаж байсан ч тэдгээрийг Vue фреймворкийн тодорхой хэрэгсэл байдлаар ойлгон хэрэглэж ирсэн. Одоо директивүүдийн талаар дэлгэрүүлэн судлаж ойлголтоо гүнзгийрүүлэх цаг болсон. Директив гэдэг нь html шаблоны дотор ашиглан хуудасны элементүүдтэй харьцан ажиллах боломжийг өгдөг тусгай атрибут юм. Өмнөх хичээлүүдэд бид v-on, v-bind гэх мэтийн директивүүдийг их олон ашигласан. Энэ хичээлээр бид өөрсдийн директивийг үүсгэн ашиглаж сурцгаах болно. Хичээлд ашиглах төсөл доорх код бүхий

<template>
  <div>
      <h2>{{ title }}</h2>  
  </div>
</template>

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

<style scoped>

</style>

нэг App.vue компонентоос бүрдэнэ.

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

Манай хичээлийн жишээ бага болохоор Vuex store -ийн хэмжээ жижиг байгаа. Төслийг хөгжүүлэхийн хирээр компонентуудын тоо өсөхийн зэрэгцээ Vuex store -д тодорхойлогдох зүйлүүд нэмэгдэн ирэх нь ойлгомжтой. Эндээс state, mutation, getters, actions -д олон тооны зүйлүүдийг тодорхойлон өгснөөр файлын хэмжээ томрох, кодийг ойлгоход хүндрэлтэй болон ирнэ. Иймээс Vuex store -ийг төрөл бүрийн модулд хуваан жижиглэх арга байдгийг хичээлээр авч үзье.

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

Хэрэглэгч талын хуудасны элементүүдийг удирдах бас нэгэн арга бол v-if директивийг ашиглах юм. Хуудас дахь элементүүдийг удирдах ажиллагааг хөнгөн эвтэйхэн хийдэг нь раектив фреймворкуудын нэг давуу тал бөгөөд хичээлээр v-if директивийн ажиллагааны онцлогийг

    <body>
        <div id="app">
            <h1 v-if="isVisible">Гарчиг 1</h1>
            <h2 v-else style="color: red">Гарчиг 2</h2>
            <hr>
            <button @click="isVisible = !isVisible">Сэлгэгч</button>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
                    isVisible: true
                }
            })
        </script>        
    </body>

кодоор авч үзье. Код хэрхэн ажиллахыг мэдэх тул тайлбар хэрэггүй.

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

Формын өгөгдөлд шалгалт буюу validation хийх ажиллагаа ямарч програмын хувьд чухал хэсэг байдаг тул материалыг анхааралтай судлан ойлгон автлаа үзээрэй. Формын шалгалтуудад ашиглах төслийг Формын шалгалтын бэлтгэл хичээлд үүсгэн Vuelidate пакетийг суулган цахим шуудангийн хаягийг авах талбарыг нэмсэн. Одоо формын шалгалтад Vuelidate пакетийг хэрхэн ашиглахыг сурцгааж эхлэе.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

хязгаарыг бод.

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

 

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

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

 

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

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