Референс

ReactDOM элементэд хандах бас нэгэн боломжийн талаар авч үзье. Энэ боломжийг референс гэдэг бөгөөд та өөр фреймворкуудыг судлаж байсан бол мэдэх байх. Референс React -д хэрхэн ажилладаг ямар хэрэгтэйг харцгаая. Машинуудын жагсаалтыг үзүүлэх Car компонент машины мэдээллийг үзүүлэхдээ түүний нэрийг өөрчлөх input элементийг агуулж байгаа. Тэгвэл Car компонент машины мэдээллийг үзүүлэхэд жагсаалтын аль нэгэн элемент дээр фокус буюу сонголт хийгдсэн байх асуудлыг шийдэх гэе. Үүнийг хэрхэн хэрэгжүүлэх вэ? гэвэл үнэн хэрэгтээ сонголт хийгдэх элементийг DOM -оос аваад түүнд focus аргыг хэрэглэх юм.

Үүнийг react референсээр

class Car extends React.Component {
  componentDidMount() {
    this.inputRef.focus();
  }
  render() {
    ...

    return (
      <>
        ...
        <input
          ref={(inputRef) => (this.inputRef = inputRef)}
          type="text"
          onChange={this.props.onChangeName}
          value={this.props.name}
          className={inputClasses.join(" ")}
        />
        ...
      </>
    );
  }
}

гэж хэрэгжүүлье. Кодод машиний нэрийг оруулах input элементэд ref={(inputRef) => (this.inputRef = inputRef)} гэсэн хуудаст харагдахгүй ч JSX ойлгох шинэ атрибутийг нэмсэн. Атрибутийн утгаар эргэн дуудалтын /callback/ функцийг тодорхойлсон. Функцэд ирэх inputRef параметрт классаас хандах боломжтой болгохын тулд this.inputRef -д олгосон байгаа. Класст inputRef -тэй ажиллахын тулд DOM -д компонент байршуулсны дараа ажиллах componentDidMount аргад референсэд хандан /this.inputRef.focus()/ түүний focus аргыг дуудсан. Төслийг ажлуулаад машиний жагсаалтыг нээвэл

Сүүлийн машиний нэрийг солих input элемент дээр focus ажиллан элементийг идэвхижүүлнэ. Машиний жагсаалт нээгдэхэд дурын элементийг идэвхижүүлье гэвэл App компонентоос Car компонентийн дуудалтад

         ...
            <Car
              name={car.name}
              year={car.year}
              index={index}
              onDelete={this.deleteHandler.bind(this, index)}
              onChangeName={(event) =>
                this.onChangeName(event.target.value, index)
              }
            />
        ...

index={index} шинжийг дамжуулаад Car компонентийн componentDidMount аргад шинжийн утга хэрэгтэй input -ийн дугаартай тохирч байвал

  componentDidMount() {
    if (this.props.index === 0) {
      this.inputRef.focus();
    }
  }

түүнд focus аргыг дуудах байдлаар хэрэгжүүлж болно. Car компонентийн шинжүүдийн төрлийн обьектод тоон төрлийн index шинжийг нэмэн оруулан

Car.propTypes = {
  name: PropTypes.string.isRequired,
  year: PropTypes.number,
  index: PropTypes.number,
  onChange: PropTypes.func,
  onDelete: PropTypes.func,
};

өгөөрэй. Одоо машиний жагсаалтыг нээвэл эхний input элемент дээр focus ажиллан элементийг идэвхижүүлнэ.
DOM элементэд референсээр хандах шаардлага бага гардаг ч компонентод ямар нэгэн нэмэлт код буюу plugin -ийг багцлан оруулан ирэх үед ихээр ашигладаг. plugin -ууд голдуу хуудас дээрх DOM элементүүдтэй ихээр ажилладаг. Референсээр дамжуулан тодорхой обьектод хандан түүнийг plugin -д дамжуулан өгнө. Үүний классик жишээ бол jquery -д элементийг дамжуулах. React -ийг jquery -тэй хослуулан ашиглах шаардлага бага ч plugin -уудад DOM элементэд хандах шаардлагатай үед референс гарцаагүй хэрэгтэй.
React 16 -гаас эхлэн референсийг

class Car extends React.Component {
  constructor(props) {
    super(props);
    this.inputRef = React.createRef();
  }

  componentDidMount() {
    if (this.props.index === 0) {
      this.inputRef.current.focus();
    }
  }
  render() {
    ...

    return (
      <>
        ...
        <input
          ref={this.inputRef}
          type="text"
          onChange={this.props.onChangeName}
          value={this.props.name}
          className={inputClasses.join(" ")}
        />
        ...
      </>
    );
  }
}

арай өөрөөр дамжуулах боломжтой болсон. Кодод орсон өөрчлөлт бол классийн байгуулагч (constructor) функцийг тодорхойлоод түүнд React -ийн createRef аргаар локал референсийг үүсгэн өгсөн. Манай класс React -ийн Component классаас удамшаад өөрийн байгуулагч аргатай болсон тул super аргаар суурь классийн байгуулагчийг дуудах ёстой. Байгуулагчид үүсгэн өгсөн референсээр элементэд хандахын тулд эргэн дуудалтын функц ашиглахгүйгээр ref={this.inputRef} гэж хандана. Локал референсээр элементэд хандахдаа референсийн current обьектоор дамжин түүний аргыг this.inputRef.current.focus() дуудна. Өөрчлөлтийг хадгалаад програмийн ажиллагааг шалгавал бүх зүйл хэвийн ажиллана. Туршаад үзээрэй.
Локал референсийг тусгай зорилгоор ашигладаг тул та current обьектоор дамжуулан элементэд javascript -ээр хийдэг шиг суурь удирдлагыг хийх хэрэггүй. Жишээ нь this.inputRef.current.style.background = 'red' гэх мэтээр. Үүний оронд элементийг удирдах React -ийн олон боломжууд ашиглах нь илүү.

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

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

Html хэвийн элементүүдэд хэвжүүлэлтийн стилийг шууд буюу inline /элементийн тодорхойлолтын мөрөнд/ зааж болдог. Үүнийг React компонентийн хэвийн элементүүдэд хэрхэн өгөхийг App компонентийн

class App extends Component {
  render() {
    return (
      <div>
        <h1>
          Hello world!
        </h1>
      </div>
    )
  }
}

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

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

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

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

import React, { Component } from "react";

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

export default Quiz;

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

Та сайт боловсруулж байсан бол хэрэглэгч талын хуудаст javascript -ийг ашиглахгүйгээр олигтой үр дүнд хүрэхгүй гэдгийг ойлгосон байх. Сүүлийн жилүүдэд интернетэд сууриласан програмууд хэрэглэгч талын хуудасны бие даан ажиллах боломжид ихээхэн анхаарах болсон. Учир нь програмуудын хийж гүйцэтгэх ажлууд их болох тусам бүгдийг сервер тал хариуцах нь нилээд төвөгтэй болон ирдэг. Үүний зэрэгцээ хэрэглэгч талын компьютерийн хүчин чадал ихээхэн дээшилсэн нь зарим нэгэн ажиллагаануудыг хэрэглэгч талд хийх нь илүү үр ашигтай болсон. Иймээс л javascript хэлийг програм зохиогчдын заавал эзэмшсэн байх хэлүүдэд оруулаад байгаа хэрэг. ES6 -д бий болсон Set төстэй бас нэгэн бүтэц бол Map обьект юм. Set бүтэц массивтай төстэй бол харин Map бүтэц обьект хэлбэрийн. Map бүтцийг

let map = new Map();

map.set('name', 'e-surgalt');
map.set('age', 20);

console.log(map);

жишээн дээр судлая. map -ийг Map обьектын хувь байдлаар үүсгээд түүний set аргаар name, age талбаруудыг үүсгэн утга олгоод map -ийг консолд үзүүлбэл

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

Хичээлээр RxJs сангийн талаар өмнөх хичээлүүдээр олон авсан мэдлэгээ бататган API контактад хандан хэрэглэгчийн мэдээллийг авах энгийн програмыг боловсруулах болно. Програмаас төрөл бүрийн хүсэлтийг илгээх боломжтой болгох зорилгоор төсөлдөө Jquery санг суулгая. Үүний тулд WebStorm текст засварлагчийн терминалыг нээгээд

npm i jquery командыг өгөөрэй.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

Хуваах нь нэг тоо нөгөө тоонд хэдэн удаа агуулагдаж буй тодорхойлох арифметикийн үйлдэл.
Хуваалтыг нэг бус удаа…

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

 

Зуучлагч (Mediator) нь олон тооны обьектууд бие биетэйгээ холбоос үүсгэхгүйгээр харилцан ажиллах боломжийг хангах загварчлалын хэв юм. Ингэснээр…

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

 

Делегатууд хичээлд ухагдхууны талаар дэлгэрэнгүй үзсэн ч жишээнүүд делегатийн хүчийг бүрэн харуулж чадахааргүй байсан.…

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

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

Арифметик прогрессын ялгавар тэгтэй тэнцүү биш. Энэхүү прогрессын 1-р гишүүнийг 2-р гишүүнээр, 2-р гишүүнийг 3-р гишүүнээр, 3-р гишүүнийг 1-р гишүүнээр үржүүлэхэд гарах тоонууд өгөгдсөн дарааллаар геометрийн прогресс үүсгэдэг бол геометр прогессын хуваарийг ол.

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

 

Бөмбөрцөгт багтсан зөв дөрвөн өнцөгт пирамидийн суурь нь бөмбөрцөгийн төвийг дайрч байв. Пирамидийн эзэлхүүн 18-тай тэнцүү бол бөмбөрцөгийн радиусийг ол.

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

 

Зөв зургаан өнцөгт пирамидийн апофем h -тэй тэнцүү бөгөөд сууртай үүсгэх хоёр талст өнцөг 600 градус бол пирамидийн бүтэн гадаргуун талбайг ол.

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