Функцэд параметр дамжуулах

React -д үйл явцыг хэрхэн боловсруулах талаар гүнзгийрүүлэн судлая. Үүний тулд Car компонентийн кодод Дарах нэртэй товчийг

import React from 'react'

const car = props => <div>
  <h3>Машиний нэр: {props.name}</h3>
  <p>Он: <strong>{props.year}</strong></p>
  <button>Дарах</button>
</div>

export default car

нэмэн өгөөд хуудсаа харвал

гэж харагдана.

Зөвлөмж: Хичээлийн материалыг бүрэн ойлгохын тулд React JS сан хичээлийн багцыг бүхэлд нь үзэхийг зөвлөе.

Car компонентод Дарах нэртэй товч нэмэгдсэн хэдий ч ямарч үйл явцыг мэдрэхгүй. Тэгвэл Car компонентийн Дарах товчийг дарахад App компонент h1 гарчигаар үзүүлж байгаа текстийг өөрчлөх ажиллагааг оруулан ирье. Car компонент App компонентоос дуудагдахын дээр солих гэж буй pageTitle талбар App компонентод state обьектод байгаа нь үндсэн асуудал. Эхлээд хүүхэд компонентод үйл явцын боловсруулагчийг /функц/ хэрхэн дамжуулахыг App компонентийн render аргын

  render() {
    console.log('Render')
    const divStyle = {
      textAlign: 'center'
    }

    const cars = this.state.cars

    return (
      <div style={divStyle}>
        <h1>
          {this.state.pageTitle}
        </h1>
        <button onClick={this.changeTitleHandler}>Гарчиг өөрчлөх</button>
        <Car
          name={cars[0].name}
          year={cars[0].year}
          onChangeTitle={this.changeTitleHandler}
        />
        <Car
          name={cars[1].name}
          year={cars[1].year}
        />
        <Car
          name={cars[2].name}
          year={cars[2].year}
        />
      </div>
    )

кодоос харцгаая. Ердийн html элементийн хувьд үйл явцын боловсруулагчийг тавин өгөхийг Гарчиг өөрчлөх товч дээр үзүүлсэн. Харин react компонентийн хувьд өгөгдлийн загвар нь html элементийнхээс өөр тул энэ арга ажиллахгүй. App компонентийн Гарчиг өөрчлөх товчны боловсруулагч changeTitleHandler функцийг Car компонентод параметрээр дамжуулахдаа түүнийг ердийн функц шиг л дамжуулдаг. Параметрийн нэрийг үйл явцын нэртэй зохицуулан ямраар ч өгөх боломжтой. Кодод товчны даралтаар хийгдэх ажиллагаатай холбон onChangeTitle нэрийг өгсөн. Параметрийн утгаар өмнөхтэй ижил changeTitleHandler функцийн холбоосыг өгнө. Одоо дамжуулсан параметрт Car компонентод

const car = props => <div>
  <h3>Машиний нэр: {props.name}</h3>
  <p>Он: <strong>{props.year}</strong></p>
  <button onClick={props.onChangeTitle}>Дарах</button>
</div>

гэж хандана. Хүүхэд компонентийн үйл явцын сонсогч тавих элементэд Jsx атрибутын нэрээ өгөөд props -оор дамжин функцийн холбоосыг агуулсан ирсэн параметрийг өгөхөд л хангалттай. Ингэснээр react тухайн холбоосоор App компонентийн changeTitleHandler функцийг ажиллуулах юм. Өөрчлөлтийг хадгалаад хуудсаа нээгээд Гарчиг өөрчлөх, эхний машиний Дарах товчууд дээр дарвал

h1 гарчигаар үзүүлж байгаа текст өөрчлөгдөх болно. Дараагийн хоёр машиний Дарах товчууд үйл явцыг мэдрэхгүйн дээр h1 гарчигаар үзүүлж байгаа текстийн өөрчлөлтийг код дотор шууд нэмэх байдлаар хийсэн болохоор товч дарагдах бүрд гарчигт нэг ижил текстийг нэмсээр байгаа. Үүнийг арай илүү практик утгатай болгоё. Өөрөөр хэлбэл changeTitleHandler функцэд өөрчлөлт хаанаас хийгдэж байгаа параметрээр дамжуулан илүү ойлгомжтой болгох юм. changeTitleHandler функцийн хувьд

  changeTitleHandler = (newTitle) => {
    this.setState({
      pageTitle: newTitle
    })
  }

гэхэд л болно. changeTitleHandler функц параметр аваад түүгээр pageTitle төлвийг өөрчилнө. changeTitleHandler функцэд параметрийг хэрхэн дамжуулах вэ? Үүнийг хэрэгжүүлэх хоёр аргыг App компонентийн render аргын

  render() {
    console.log('Render')
    const divStyle = {
      textAlign: 'center'
    }

    const cars = this.state.cars

    return (
      <div style={divStyle}>
        <h1>
          {this.state.pageTitle}
        </h1>
        <button onClick={this.changeTitleHandler.bind(this, 'App өөрчлөлт')}>Гарчиг өөрчлөх</button>
        <Car
          name={cars[0].name}
          year={cars[0].year}
          onChangeTitle={this.changeTitleHandler.bind(this, cars[0].name)}
        />
        <Car
          name={cars[1].name}
          year={cars[1].year}
          onChangeTitle={() => this.changeTitleHandler(cars[1].name)}
        />
        <Car
          name={cars[2].name}
          year={cars[2].year}
          onChangeTitle={() => this.changeTitleHandler(cars[2].name)}
        />
      </div>
    )
  }

кодоос харцгаая. Эхнийх нь javascript функцэд байдаг bind аргыг ашиглах. bind арга шинэ функц буцаахаас түүнийг дуудаггүй тул параметр дамжуулах сайн арга. bind арга эхний параметрээр ажлуулахгүйгээр буцаах функцийг /context -ээр/ авдаг. Кодод өгсөн this бол changeTitleHandler функцийг зааж байгаа хэрэг. Дараа нь аргаас буцаагдах функцэд дамжуулах параметрүүдийг өгдөг. Энд App өөрчлөлт текстийг өгсөн. Ингэснээр Гарчиг өөрчлөх товч дээр дарахад changeTitleHandler функцийг App өөрчлөлт параметртэй дуудах функцийн холбоос үүсэх юм. Энэ аргаар эхний машиний Дарах товчны үйл явцыг боловсруулагч функцэд машиний нэрийг параметрээр дамжуулсан. Сүүлийн хоёр машиний Дарах товчны үйл явцыг боловсруулагчийг bind аргаар биш функцийн холбоос байдлаар дамжуулсан. Параметрийн утгаар сумаар тодорхойлогдох функцийг зарлаад түүн дотроос changeTitleHandler функцэд машиний нэрийг параметрээр өгөн дуудахыг заасан. Өөрчлөлтийг хадгалаад хуудсаа нээгээд Гарчиг өөрчлөх болон машинуудын Дарах товчууд дээр дарвал үйл явцын боловсруулагчид хаанаас дарагдсанг илтгэх параметрүүд очих тул h1 гарчигаар үзүүлж байгаа текстээс үйл явц хаана бий болсонг мэдэх боломжтой болсон нь харагдана.
Боловсруулагч функцэд параметр дамжуулж байгаа хоёр аргын алийг ч ашиглах боломжтой ч bind арга хөтөчөөс бага нөөцийг ашигладаг тул арай зөв хэлбэр юм. Хоёрдахь аргын хувьд хуудас зурагдах бүрд функцийг дуудах шинэ функцийг үүсгэх болно. Програм жижигхэн байхад энэ нь нэг их нөлөөгүй ч аргыг олон хэрэглэвэл програмийн бүтээмжид айхтар биш ч нөлөөлөх талтай.

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

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

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

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

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

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

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

Үйл явдлыг боловсруулах бол Javascript программын үндсэн үүрэг гэж үзэхэд бараг болно. Иймд хичээлийг сайн үзээд ойлгон авах хэрэгтэй. Нэг үйл явдал тухайн үйл явц болсон элементэд нөлөө үзүүлэхээс гадна түүний дээрх элементүүдэд бас үйлчилдэг. Энэ нь элементэд олон дараалсан HTML тег агуулагдаж байх тохиолдолд тег бүрд боловсруулагч тавихгүйгээр дээд түвшин буюу эцэг элементэд ганц боловсруулагч заагаад бүх үйл явцыг барихад их эвтэйхэн байдаг. Гурван элемент нэг нэгдээ орон байрласан тохиолдлыг авч үзье.

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

Сорилгын үр дүнгийн QuizResult компонентод сорилгыг дахин эхлүүлэх товч байгаа. react -ийг зохиогчид  програмийг компонент дээр суурилан хийх аргачлалыг уриалдаг учраас сорилгыг дахин эхлүүлэх товчийг тусд нь компонент байдлаар боловсруулъя. Үүний тулд төслийн components хавтаст UI нэртэй хавтасыг үүсгээд түүнд Button хавтасыг үүсгэе. UI гэдэг нь /user interface/ буюу хэрэглэгч талын дэлгэцийн төрөл бүрийн элементүүдийг үзүүлэх компонентуудыг агуулах юм. Button хавтас бол дэлгэц дээр үзүүлэх товчны компонентийн хавтас бөгөөд түүнд Button.js, Button.module.css үүсгэн өгөөрэй.

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

Өмнөх Компонент гэж юу болох хичээлд бид react дээр програмийн кодийг бичихдээ react -ийг index.html файлд оруулан ирэн шууд ашигласан. Програмийн кодийг нэг файлд бүгдийг бичих, кодийг шалгах ажиллагаа, jsx -ийн компиляцийг хийхдээ babel санг нэмэлтээр оруулан ирэх зэрэг нь тийм сайн практик биш тул програм үүсгэх ажиллагааг автоматжуулсан хэрэгслийг react -ийг бүтээгчид боловсруулсан. Дурын хайлтын /жишээ нь google/ системээр create react app мөрийг хайлгавал хэрэгслийг эхний мөрүүдэд олон ирнэ.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

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

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

 

Талууд нь 5; 12; 13 нэгж урттай гурвалжны хэлбэрийг тогтоогоорой.

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

 

Призмд багтсан V эзэлхүүнтэй дөрвөн өнцөгт зөв пирамидийн оройнууд дээд суурийн төв болон доод суурийн талуудын дундаж цэгүүд харгалзах бол призмийн эзэлхүүнийг ол.

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