Что вы понимаете под ссылками (refs)?
Refs предоставляют доступ к узлам DOM или элементам React, созданным с помощью метода render(). Рефы являются ссылками на DOM-элементы или классовые компоненты из родительского компонента.
Refs также предоставляют возможность связывания элементов дочернего компонента с родительским в форме передачи (перенаправления) ссылок (ref forwarding).
Пример
1. Установка фокуса, выделение текста или воспроизведение медиа
2. Запуск императивной анимации
3. Интеграция со сторонними библиотеками для работы с DOM
Refs предоставляют доступ к узлам DOM или элементам React, созданным с помощью метода render(). Рефы являются ссылками на DOM-элементы или классовые компоненты из родительского компонента.
Refs также предоставляют возможность связывания элементов дочернего компонента с родительским в форме передачи (перенаправления) ссылок (ref forwarding).
Пример
class App extends React.Component {
constructor(props) {
super(props)
// создаем ссылку на DOM-элемент
this.textInput = React.createRef()
this.state = {
value: ''
}
}
// обновляем состояние с помощью ссылки
handleSubmit = e => {
e.preventDefault()
this.setState({ value: this.textInput.current.value})
}
render() {
return (
<div>
<h1>React Ref - createRef</h1>
{/* данное значение будет обновлено */}
<h3>Значение: {this.state.value}</h3>
<form onSubmit={this.handleSubmit}>
{/* добавляем ссылку к <input> для обновления <h3> его значением */}
<input type="text" ref={this.textInput} />
<button>Отправить</button>
</form>
</div>
)
}
}
Случаи использования ссылок1. Установка фокуса, выделение текста или воспроизведение медиа
2. Запуск императивной анимации
3. Интеграция со сторонними библиотеками для работы с DOM
Можно ли сделать все буквы текстового элемента заглавными, используя только CSS?
Anonymous Quiz
96%
да
4%
нет
Что произойдет при вызове setState() в конструкторе?
При использовании setState() происходит присвоение значения объекту состояния и повторный рендеринг компонента и всех его потомков. При инициализации экземпляра с помощью конструктора, компонент еще не отрисован. Поэтому у нас нет необходимости в его перерисовке.
В конструкторе объекту состояния присваивается начальное значение с помощью this.state = {}. Для обновления состояния используется this.setState().
Пример
При использовании setState() происходит присвоение значения объекту состояния и повторный рендеринг компонента и всех его потомков. При инициализации экземпляра с помощью конструктора, компонент еще не отрисован. Поэтому у нас нет необходимости в его перерисовке.
В конструкторе объекту состояния присваивается начальное значение с помощью this.state = {}. Для обновления состояния используется this.setState().
Пример
import React, { Component } from 'react'
class Food extends Component {
constructor(props) {
super(props)
this.state = {
fruits: ['яблоко', 'апельсин'],
count: 0
}
}
render() {
return (
<div className = "container">
<h2> Привет!!!</h2>
<p> У меня есть {this.state.count} фруктов</p>
</div>
)
}
}Двойная сортировка
Вам дан массив, состоящий из чисел и слов. Вам нужно написать функцию, которая вернет отсортированный массив, в котором сначала идут числа по возрастанию, а затем слова в алфавитном порядке.
Примеры:
Вам дан массив, состоящий из чисел и слов. Вам нужно написать функцию, которая вернет отсортированный массив, в котором сначала идут числа по возрастанию, а затем слова в алфавитном порядке.
Примеры:
dbSort(["Banana", "Orange", "Apple", "Mango", 0, 2, 2])
//[0,2,2,"Apple","Banana","Mango","Orange"]);
dbSort(["C", "W", "W", "W", 1, 2, 0])
//[0,1,2,"C","W","W","W"]);Эффективный TypeScript
Эффективный TypeScript необходим тем, кто уже имеет опыт работы с JavaScript. Цель этой книги — не научить пользоваться инструментами, а помочь повысить профессиональный уровень. TypeScript представляет собой не просто систему типов, а набор служб языка, удобных в использовании. Он повышает безопасность разработки в JavaScript, делает работу увлекательнее и проще.
Эффективный TypeScript необходим тем, кто уже имеет опыт работы с JavaScript. Цель этой книги — не научить пользоваться инструментами, а помочь повысить профессиональный уровень. TypeScript представляет собой не просто систему типов, а набор служб языка, удобных в использовании. Он повышает безопасность разработки в JavaScript, делает работу увлекательнее и проще.
🔥 Новости от команды Лектрума🔥
18 марта в 19:30 по Киеву и 20:30 по Москве пройдёт вебинар для новичков на тему «Старт в веб-разработку: JavaScript».
Программа:
🔸 Зачем нужен JavaScript?
🔸 План развития в разработке на основе JS.
🔸 Как эффективно стартовать новичку в разработку?
🔸 Требования к начинающим разработчикам.
🔸 QA с экспертом: разберём вопросы, которые беспокоят новичков.
Приглашаем на вебинар:
🤓 Верстальщиков, которые хотят продвигаться в веб-разработке.
🤓 Новичков-самоучек, которые запутались в своём пути.
Нажимайте на кнопку для регистрации ⬇️ и занимайте места.
18 марта в 19:30 по Киеву и 20:30 по Москве пройдёт вебинар для новичков на тему «Старт в веб-разработку: JavaScript».
Программа:
🔸 Зачем нужен JavaScript?
🔸 План развития в разработке на основе JS.
🔸 Как эффективно стартовать новичку в разработку?
🔸 Требования к начинающим разработчикам.
🔸 QA с экспертом: разберём вопросы, которые беспокоят новичков.
Приглашаем на вебинар:
🤓 Верстальщиков, которые хотят продвигаться в веб-разработке.
🤓 Новичков-самоучек, которые запутались в своём пути.
Нажимайте на кнопку для регистрации ⬇️ и занимайте места.
В чем разница между браузерным и виртуальным DOM?
Браузерный DOM
DOM расшифровывается как "Document Object Model" (объектная модель документа). Браузерный DOM предоставляет интерфейс (API) для работы с узлами. Данный интерфейс включает методы querySelector(), textContent(), appendChild(), removeChild() и т.д.
DOM представляет собой древовидную структуру данных. Поэтому изменения и обновления DOM являются достаточно быстрыми. Однако, после обновления элемент и его потомки должны быть повторно отрисованы для обновления слоя представления. Именно это делает DOM медленным.
Виртуальный DOM
Виртуальный DOM - это объектное представление DOM, хранимое в оперативной памяти. При каждом изменении состояния приложения обновляется виртуальный, а не браузерный DOM.
Виртуальный DOM - это абстракция браузерного DOM. Он является легковесным и не зависит от специфичных для браузера деталей реализации. Поскольку браузерный DOM сам по себе является абстракцией, правильнее будет сказать, что виртуальный DOM - это абстракция абстракции.
Браузерный DOM
DOM расшифровывается как "Document Object Model" (объектная модель документа). Браузерный DOM предоставляет интерфейс (API) для работы с узлами. Данный интерфейс включает методы querySelector(), textContent(), appendChild(), removeChild() и т.д.
DOM представляет собой древовидную структуру данных. Поэтому изменения и обновления DOM являются достаточно быстрыми. Однако, после обновления элемент и его потомки должны быть повторно отрисованы для обновления слоя представления. Именно это делает DOM медленным.
Виртуальный DOM
Виртуальный DOM - это объектное представление DOM, хранимое в оперативной памяти. При каждом изменении состояния приложения обновляется виртуальный, а не браузерный DOM.
Виртуальный DOM - это абстракция браузерного DOM. Он является легковесным и не зависит от специфичных для браузера деталей реализации. Поскольку браузерный DOM сам по себе является абстракцией, правильнее будет сказать, что виртуальный DOM - это абстракция абстракции.
В чем преимущество виртуального DOM?
При добавлении новых элементов в UI создается виртуальное представление дерева элементов. Каждый элемент является узлом этого дерева. При изменении состояния любого из этих элементов создается новый виртуальный DOM. Новое представление сравнивается со старым, определяется разница.
После этого вычисляется наиболее эффективный способ применения изменений к браузерному DOM. Это позволяет минимизировать количество операций обновления, что, в свою очередь, снижает "цену" обновления реального DOM.
Преимущества виртуального DOM
1. Процесс обновления является сбалансированным и оптимизированным
2. Связывание данных в React предполагает соблюдение некоторых правил для создания динамичных приложений
3. Идеально подходит для "mobile first" приложений
4. Умный рендеринг. Использование эвристических методов сравнения позволяет минимизировать количество операций обновления
При добавлении новых элементов в UI создается виртуальное представление дерева элементов. Каждый элемент является узлом этого дерева. При изменении состояния любого из этих элементов создается новый виртуальный DOM. Новое представление сравнивается со старым, определяется разница.
После этого вычисляется наиболее эффективный способ применения изменений к браузерному DOM. Это позволяет минимизировать количество операций обновления, что, в свою очередь, снижает "цену" обновления реального DOM.
Преимущества виртуального DOM
1. Процесс обновления является сбалансированным и оптимизированным
2. Связывание данных в React предполагает соблюдение некоторых правил для создания динамичных приложений
3. Идеально подходит для "mobile first" приложений
4. Умный рендеринг. Использование эвристических методов сравнения позволяет минимизировать количество операций обновления
Сортировка по последней букве
Вам дана строка, состоящая из слов. Вам нужно отсортировать слова по последней букве. Если в двух словах одинаковая последняя буква, то они должны выводиться в исходном порядке.
Примеры:
Вам дана строка, состоящая из слов. Вам нужно отсортировать слова по последней букве. Если в двух словах одинаковая последняя буква, то они должны выводиться в исходном порядке.
Примеры:
last('man i need a taxi up to ubud')
//['a', 'need', 'ubud', 'i', 'taxi', 'man', 'to', 'up']
last('what time are we climbing up the volcano')
//['time', 'are', 'we', 'the', 'climbing', 'volcano', 'up', 'what'])
last('take me to semynak')
//['take', 'me', 'semynak', 'to']Определите разницу между компонентами с состоянием и компонентами без состояния
Компоненты с состоянием и без называются по разному:
Компоненты-контейнеры и компоненты-представители
Умные и глупые компоненты
Разница между ними, как следует из названия, состоит в том, что одни компоненты имеют состояние, а другие нет. Это означает, что компоненты с состоянием следят за изменением данных, а компоненты без состояния рендерят то, что передается им с помощью пропов, т.е. они всегда рендерят одно и тоже.
Пример Stateful/Container/Smart компонент:
Компоненты с состоянием и без называются по разному:
Компоненты-контейнеры и компоненты-представители
Умные и глупые компоненты
Разница между ними, как следует из названия, состоит в том, что одни компоненты имеют состояние, а другие нет. Это означает, что компоненты с состоянием следят за изменением данных, а компоненты без состояния рендерят то, что передается им с помощью пропов, т.е. они всегда рендерят одно и тоже.
Пример Stateful/Container/Smart компонент:
class Main extends Component {
constructor() {
super()
this.state = {
books: []
}
}
render() {
<BooksList books={this.state.books} />
}
}
Пример Stateless/Presentational/Dumb компонент const BooksList = ({ books }) => {
return (
<ul>
{books.map(book => <li key={book.id}>{book.name}</li>})}
</ul>
)
}На чем писать Web приложения?
Taylor Otwell создал целую экосистему для веб разработки, сегодня она включает в себя:
- Коробочную интеграцию с Vue.js
- Механизм для отложенных задач
- Сокеты с авторизацией
и многое другое.
На канале WebCraft практикующие разработчики делятся тонкостями работы с Laravel и Vue.js, бест практиками в PHP / JS / CSS
Этот канал тебя прокачает, подписывайся 👇
Taylor Otwell создал целую экосистему для веб разработки, сегодня она включает в себя:
- Коробочную интеграцию с Vue.js
- Механизм для отложенных задач
- Сокеты с авторизацией
и многое другое.
На канале WebCraft практикующие разработчики делятся тонкостями работы с Laravel и Vue.js, бест практиками в PHP / JS / CSS
Этот канал тебя прокачает, подписывайся 👇