Референс

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 -ийн олон боломжууд ашиглах нь илүү.

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

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

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

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

Сервертэй ажиллах vue-resource хэрэгслийн зарим нэгэн параметрүүдийг глобалаар тохируулахыг авч үзье. Өмнөх хичээлүүдэд $resource системийн аргад серверт хандах http://localhost:3000/cars хаягийг мөр хэлбэрээр дамжуулан resource обьектыг буцаан авч байсан. Програмын backend сервер ихэнхдээ нэг сервер буюу машинд байрлан өгөгдлийн санд хандах суурь хаяг тогтмол байдаг.

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

React сан компонентод суурилан ажилладаг тул асуултын хариултын хувилбаруудыг ActiveQuiz компонентоос салган тусд нь компонент болгоё. Үүний тулд төслийн ActiveQuiz компонентийг хадгалж буй хавтаст AnswersList шинэ хавтсыг үүсгээд түүнд AnswersList.js, AnswersList.module.css файлуудыг үүсгэн өгье.

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

Роутерийг тохируулах хичээлээр төсөлд Home, Cars хуудсуудыг үүсгэн чиглүүлэгчийг тохируулан бүртгүүлсэн хэдий ч хуудас хооронд шилжихдээ хаягийн мөрөнд шууд бичин өгч байгаа. Иймээс хуудас хоорондын шилжилтийг цэс үүсгэн түүгээр дамжуулан хийе. Та Формын шалгалтын бэлтгэл хичээлийг үзсэн бол төсөлд Bootstrap -ийг суулгасан гэдгийг мэдэж байгаа.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

тэгшитгэлийн нэг язгуур нь эерэг, нөгөө язгуур нь сөрөг байх параметрийн бүх утгыг ол.
Тэнцэтгэл бишийн нэг шийд нь M -ээс бага нөгөө шийд нь M -ээс их байх гарцаагүй ба хүрэлцээтэй нөхцөлийг ашиглавал болох бөгөөд энэ тэнцэтгэл бишийг бодвол үед манай тэнцэтгэл бишийн шийдийн нэг нь эерэг нөгөө нь сөрөг байна.

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

 

функц [1;9] завсарын аль хэсэгт буурах вэ?

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

 

функцийн хамгийн бага утгыг ол.

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