по куполам Скотта
Вам интересно реагировать и не имел возможности узнать это? Или, может быть, вы пробовали учебные пособия в прошлом, но изо всех сил пытались овладеть основными понятиями? Или, может быть, вы узнали основы, но хотите консолидировать свои знания? В любом случае эта статья для вас.
Мы собираемся построить простой музыкальный проигрыватель React Music, налогом на новые концепции реагирования, когда мы идем.
Вот что мы будем покрывать:
- Что такое реактивный компонент?
- Рендеринг реагирования
- Класс против функциональных компонентов
- Jsx.
- Состояние
- Обработка событий
- Асинхронный setstate.
- Реквизит
- Ссылка
Это только все, что вам нужно для создания и поддерживать приложение React. Но мы собираемся представить его кусок.
Настраивать
Вот ситуация: небольшой запуск добрался до вашей помощи. Они создали страницу для пользователей для загрузки музыки и визуализируются в светящийся цвет. Но им нужно, чтобы вы сделали твердую часть, чтобы заставить его работать.
Чтобы пойти, сделайте новый каталог проекта и добавьте Следующие три файла Отказ
Убедитесь, что вы используете актуальную версию Хром С этим руководством в противном случае анимация в коде выше не будет работать.
Благодаря Стивен Фабр Для кнопки воспроизведения CSS и Джастин Виндл Для кода визуализации ( Вы можете просматривать оригинал здесь ).
Откройте index.html В обои редактора кода, так и в вашем браузере, и давайте начнем!
Что реагирует?
Реагировать способ создания пользовательских интерфейсов. Это касается только то, что вы видите на интерфейсе. React предоставляет пользовательские интерфейсы очень легко создавать, вырезая каждую страницу на куски. Мы называем эти кусочки компоненты.
Вот пример резки страницы на компоненты:
Каждый раздел, выделенный выше, считается компонентом. Но что это значит для разработчика?
Что такое реактивный компонент?
Актуальный компонент представляет собой немного кода, который представляет собой часть страницы. Каждый компонент представляет собой функцию JavaScript, которая возвращает кусок кода, который представляет собой часть веб-страницы.
Чтобы построить страницу, мы называем эти функции в определенном порядке, собрали результат и показать его пользователю.
Давайте напишем компонент внутри AG в inde X.html остроумие H Тип «Текст/ Бабел»:
Когда мы называем Arfirstcomponent () Функция, мы вернемся на часть страницы.
Вы также можете написать такие функции:
const OurFirstComponent = () => { return ( // Stuff to make this component goes here );}Реагистрирование использует язык, называемый JSX, который выглядит как HTML, но работает внутри JavaScript, который обычно не делает.
Вы можете добавить простой HTML к этому разделу, чтобы он появился на UI:
Когда мы называем Arfirstcomponent () Функция, мы вернемся немного jsx. Мы можем использовать что-то называемое Реагировать поставить его на страницу.
Сейчас наше < H1> Тег будет помещен внутри элемента с Идентификатор крюк. Это должно выглядеть так, когда вы освежите браузер:
Мы также можем написать наш компонент в JSX вроде:
ReactDOM.render(, placeWeWantToPutComponent);
Это стандартное - вызывайте ваши компоненты, как вы пишете HTML.
Положить компоненты вместе
Мы можем поставить комментарии реагирования внутри других компонентов.
Вот как мы создаем нашу страницу из кусочков реагирования - гнездящимися компонентами внутри друг друга.
Компоненты класса
До сих пор мы пишем компоненты как функции. Они называются Функциональные компоненты.
Но вы можете написать компоненты еще одним способом, как классы JavaScript. Они называются компонентами класса.
class Container extends React.Component { render() { return ( I am the parent!
); }}const placeWeWantToPutComponent = document.getElementById('hook');ReactDOM.render( , placeWeWantToPutComponent);Компоненты класса должны иметь функцию под названием Визуализация () Отказ Функция Render возвращает JSX компонента. Они могут использоваться так же, как функциональные компоненты, такие как это:
Вы должны использовать функциональные компоненты над компонентами класса, потому что их легче прочитать, если вам не нужен компонент штат (больше на этом скоро).
JavaScript в JSX.
Вы можете поставить переменные JavaScript внутри вашего JSX, как это:
class Container extends React.Component { render() { const greeting = 'I am a string!'; return ( { greeting }
); }}Теперь «я строка!» будет внутри H1 Отказ
Вы также можете сделать более сложные вещи, такие как позвоните функцию:
class Container extends React.Component { render() { const addNumbers = (num1, num2) => { return num1 + num2; }; return ( The sum is: { addNumbers(1, 2) }
); }}Jsx gotchas.
Переименовать Arfirstcomponent () к Playbutton . Мы хотим, чтобы это вернуть следующее:
Но есть проблема: класс Это ключевое слово в JavaScript, поэтому мы не можем его использовать. Так как мы даем наше < ; a> cla SS O. f играть?
Используйте свойство под названием Классическое имя вместо:
Что делает этот компонент?
Компоненты класса могут хранить информацию о своей текущей ситуации. Эта информация называется Государство , который хранится в объекте JavaScript.
В приведенном ниже коде мы имеем объект, представляющий состояние наших компонентов. У этого есть ключ IsmusIcplaying который имеет ценность ложь Отказ Этот объект назначен Это в Конструктор Способ, который называется, когда класс впервые используется.
class Container extends React.Component { constructor(props) { super(props); this.state = { isMusicPlaying: false }; } render() { return ( ); }}А Конструктор Способ реагирования-компонента всегда должен вызывать Супер (реквизит) до чего-либо еще.
Хорошо, так что мы делаем с Государство ? Почему это существует?
Изменение нашего React CompLent на основе состояния
Состояние - это способ обновления нашего UI на основе События Отказ
В этом руководстве мы будем использовать состояние, чтобы изменить кнопку воспроизведения из Пауза к Играть на основе пользователя, нажав кнопку воспроизведения.
Когда пользователь нажимает на кнопку, состояние будет обновляться, что затем обновит интерфейс UI.
Вот как мы начинаем. Мы можем посмотреть состояние компонента с Это Отказ В следующем коде мы смотрим на состояние и используем его, чтобы решить, какой текст представить пользователю.
class Container extends React.Component { constructor(props) { super(props); this.state = { isMusicPlaying: false }; } render() { const status = this.state.isMusicPlaying ? 'Playing' : 'Not playing'; return ( { status }
); }}В функции рендеринга Это всегда ссылается на компонент, он внутри.
Но это не очень полезно, если у нас есть способ изменить this.state.ismusicplaying Отказ
Когда вещи происходят с нашим компонентом
Пользователь может взаимодействовать с нашими компонентами, нажав на кнопку воспроизведения. Мы хотим отреагировать (ха ... ха ...) к этим событиям.
Мы делаем это через функции, которые заботятся о событиях. Мы называем этими Обработчики событий Отказ
class Container extends React.Component { constructor(props) { super(props); this.state = { isMusicPlaying: false }; } handleClick(event) { // Do something about the click }; render() { let status = this.state.isMusicPlaying ? 'Playing :)' : 'Not playing :('; return ( { status }
); }}Когда пользователь нажимает на H1 Наш компонент сделает Handleclick Функция работает. Функция получает объект события как аргумент, что означает, что он может использовать его, если он хотел.
Мы используем .bind Метод на Handleclick Чтобы убедиться Это относится к всему компоненту, а не только H1 Отказ
Что этот компонент должен делать
Когда мы изменяем состояние нашего компонента, он снова позвонит функцию рендера.
Мы можем изменить состояние с this.setState () Если мы дадим ему новый объект, представляющий новое состояние.
Наш компонент на странице всегда будет представлять свое текущее состояние. Реагировать это для нас.
handleClick() { if (this.state.isMusicPlaying) { this.setState({ isMusicPlaying: false }); } else { this.setState({ isMusicPlaying: true }); } };Но нажатие на H1 не так хорошо, как щелкая наша фактическая кнопка воспроизведения. Давайте сделаем эту работу.
Разговаривать между компонентами
Ваши компоненты могут говорить друг с другом. Давай попробуем.
Мы можем сказать Playbutton Играть ли музыка, используя что-то называемое реквизит Отказ Реквисы - это информация, передаваемая из родительского компонента к дочерним компоненте.
Реквисы в JSX выглядят так же, как HTML-свойства.
Мы даем Playbutton опора называется IsmusIcplaying , что такое же, как IsmusIcplaying в Это Отказ
class Container extends React.Component { constructor(props) { super(props); this.state = { isMusicPlaying: false }; } handleClick() { if (this.state.isMusicPlaying) { this.setState({ isMusicPlaying: false }); } else { this.setState({ isMusicPlaying: true }); } }; render() { return ( ); }}Когда состояние Контейнер Изменения, Playbutton опоры тоже изменится, и Playbutton Функция будет вызвана снова. Это означает, что наш компонент обновится на экране.
Внутри Playbutton мы можем реагировать на изменение, потому что Playbutton Получает реквизиты в качестве аргумента:
function PlayButton(props) { const className = props.isMusicPlaying ? 'play active' : 'play'; return ;}Если мы изменим наше состояние в this.state = {iSmusIcplaying: true}; и перезагрузить страницу, вы должны увидеть кнопку паузы:
События как реквизиты
Ваши реквизиты не должны быть просто информацией. Они могут быть функциями.
function PlayButton(props) { const className = props.isMusicPlaying ? 'play active' : 'play'; return <;a onClick={props.onClick} href="#" title="Play video" className={className} />;}class Container extends React.Component { constructor(props) { super(props); this.state = { isMusicPlaying: false }; } handleClick() { if (this.state.isMusicPlaying) { this.setState({ isMusicPlaying: false }); } else { this.setState({ isMusicPlaying: true }); } }; render() { return ( ); }}Теперь, когда мы нажимаем на Playbutton это изменит состояние Контейнер , что изменит реквизит Playbutton , что заставит его обновить на странице.
Плохая вещь о setState
SetState плохо, потому что это не делает вещи сразу. Реагировать немного ждет, чтобы увидеть, есть ли больше изменений, чтобы сделать Затем это делает государственные изменения.
Это означает, что вы наверняка не знаете, что будет ваше государство, когда вы звоните SetState Отказ
Так что вы не должны делать это:
handleClick() { this.setState({ isMusicPlaying: !this.state.isMusicPlaying });};Если вы меняете свое состояние на основе старого штата, вам нужно делать вещи по-разному.
Вам нужно дать SetState Функция, а не объект. Эта функция получает старое состояние в качестве аргумента и возвращает объект, который является новым состоянием.
Похоже, это выглядит:
handleClick() { this.setState(prevState => { return { isMusicPlaying: !prevState.isMusicPlaying }; });};Это сложнее, но только необходимо, когда вы используете старое состояние, чтобы сделать новое состояние. Если нет, вы можете просто дать SetState объект.
Что такое Refs?
Давайте сделаем некоторую музыку.
Во-первых, мы добавляем
class Container extends React.Component { constructor(props) { super(props); this.state = { isMusicPlaying: false }; } handleClick() { this.setState(prevState => { return { isMusicPlaying: !prevState.isMusicPlaying }; }); }; render() { return ( ); }}Нам нужен способ получить это ither Играть () или р AUSE () на нем. Мы могли бы сделать это с документом .getelementById («аудио»). Играть () Но есть лучший реактивный способ.
Мы даем ему опоры Ref , который вызывается с Это и LT; AUDIO> Элемент и как подписывает это t o Это.audio.
Эта функция будет называться каждый раз, когда Контейнер рендеры, что означает Это .audio всегда будет актуальна и равна
Затем мы можем играть и приостановить музыку:
handleClick() { if (this.state.isMusicPlaying) { this.audio.pause(); } else { this.audio.play(); } this.setState(prevState => { return { isMusicPlaying: !prevState.isMusicPlaying }; });};Загрузите музыкальный файл (желательно MP3 файл), используя Выберите файлы Кнопка и нажмите играть, и посмотреть, как она иди!
Перемещение за пределами index.html
Как вы уже догадались, наша реакция не должна жить вечно внутри
Реагировать требует много конфигурации сборки. К счастью, инструменты, как Создать ract app Берегите все это для вас.
Установите его, чтобы создать свой собственный реагированный проект. Следуйте за своим кратким руководством и начните редактировать JavaScript внутри SRC Справочник, применяя все знания реагирования, которые вы узнали здесь!
Поздравляю!
Теперь вы можете сделать реагированные вещи.
Затем проверьте пару статей для получения дополнительной информации. Один о Реагируйте лучшие практики другой о полезной части реагирования называется Методы жизненного цикла Отказ
Если вы узнали что-то из этой статьи, пожалуйста, нажмите эти руки Clappin 'и поделитесь этим с друзьями.
Вы также можете следовать за мной на Средний и Twitter Отказ
Оригинал: "https://www.freecodecamp.org/news/everything-you-need-to-know-about-react-eaedf53238c4/"