Рубрики
Без рубрики

Думать в реакции

Реагирование отличается так много способов от предшественников передних предшественников. Но самая разная часть – это его образ мышления. Читай дальше, чтобы узнать больше!

Автор оригинала: Radu Brehar.

Реагировать отличается Во многих отношениях от его предшественников передней стороны! Настолько так, чтобы оно вызвало ренессанс в переднем и развитии пользовательского интерфейса в целом. Смотри Преобразование , Inferno , RAX чтобы назвать только несколько. Кроме того, он также вошел в местное развитие UI с Реагировать родной А теперь для пользовательских интерфейсов в VR с Реагировать VR Отказ

Реагирование становится все более стандартной целью рендеринга для различных платформ – Web, Mobile Native, OS родных и других. Люди нацеливаются на реагирование и принятие его в нескольких платформах – хороший пример этого – React Sketchapp , что позволяет реагировать компоненты для отображения в эскизе. Мы только что поцарапали поверхность того, что возможно с реагированием и возможностями, которые она приносит для развития пользовательского интерфейса в целом.

Это не о библиотеке Ract

Речь идет о реактивный образ мышления. Мы получили использованные для отображения пользовательского интерфейса, затем мутируя его обновлять и показывать последние изменения. То, что реагирует очень хорошо, должен был принести неизменяемый UIS в массы – вы никогда не «мутируете» интернет-интерфейс – вы всегда (Re-) визуалите! Всегда запустите ту же функцию, которая использовалась для начального рендеринга, чтобы получить обновленный интерфейс. Это приводит нас к основному пункту реагированного способа мышления.

Дело не в реакции – библиотека. Речь идет о реактивный образ мышления.

Речь идет о декларативном УИ

Основной точкой реагирования состоит в том, что оно освобождает вас от того, чтобы подумать, как вы переходите на ваш интерфейс из государства в штате B. Это может не выглядеть как большую сделку, но, как только у вас также будет государство C и штата D и государства E и так Вкл. И приходится явно программировать, как вы переходите из всех этих государств, вы начинаете реализовывать силу реагировать декларативный способ описания УВИ (и насколько сложно поддерживать императивные UIS).

Давайте посмотрим на быстрый пример с ванильными JS, а затем с реагированием. Скажем, у нас есть электронный вклад; Когда нет значения, оно должно показать предупреждение, когда есть недопустимое электронное письмо, оно должно показать ошибку, а когда она содержит допустимый адрес электронной почты, он должен скрыть все сообщения.

var emailInput = document.querySelector('.email input');
var messageDiv = document.querySelector('.email message');

emailInput.addEventListener('change', function(e){
  var value = e.target.value;
  var valid = isEmail(value);
  if (valid){
    messageDiv.removeClass('invalid');
    messageDiv.removeClass('warning');
    messageDiv.addClass('valid');
  }
  // ... handle is empty 
  // ...
})

Это уже выглядит сложно. В то время как в реакции все, что мы делаем, это

class extends React.Component {
  render(){
    return 
this.onChange(e)} />
} onChange(e) { const value = e.targe.value; this.setState({ cls: isEmail(value)? 'valid': value ? 'invalid': 'warning' }) } }

Состояние состояния со временем является корнем большинства ошибок UI и это где Реагируйте действительно сияют Отказ Это освобождает разработчику, чтобы думать о государственных переходах. Концептуально ваш пользовательский интерфейс пересматривается с нуля, поэтому нет необходимости делать мутации вручную.

Концептуально, вы можете подумать о реагировании как повторное рендеринг всего пользовательского интерфейса с нуля – на каждом изменении.

Малая поверхность API

С приведенным выше примером мы охватывали большинство публичных API на реагирование. Красота все это такое маленькая из API React представляет – это почти слишком просто, чтобы быть правдой. И все же Рендер метод , компонент реквизит и Состояние компонента Наиболее важными вещами в приложении React App – становление хорошего понимания на них проложены путь к продуктивному использованию реагирования в коммерческих приложениях.

В моих более 10 лет опыта я никогда не нашел другого способа написать UIS так быстро и мощно.

Конечно, Tech развивается естественным образом и становится все лучше с течением времени, но прыжок, который предложил реагирование, является огромным скачком вперед. Большинство идей не новы, они были в течение некоторое время, но отреагировали успешно принести эти очень хорошие идеи в когерентную библиотеку с четкой API и небольшим целенаправленным целей: только построить пользовательские интерфейсы. Никаких данных не вытесняет, без пользовательских моделей, без принудительной структуры приложения и т. Д. Несмотря на то, что все эти вещи имеют свое место в разработке пользовательского интерфейса и ценные, React Wantion Doad, чтобы сделать только одно действительно хорошо: построить UIS. Вот и все.

Реагирование было написано только с одной целью: опишите и построить UIS как можно более естественно.

На компонентных реквизитах и состоянии

Состояние компонентов и компонент – это основные концепции в реакции:

  • Пропры компонента передаются в компонент компонента владельца. Предпочтывание компонентов следует рассматривать как неизменные, поэтому они должны быть используется как только для чтения сам компонент.
  • Состояние компонента хранится внутри компонента и управляется только самим компонентом. Как лучшая практика, это также хорошо, если вы относитесь к состоянию компонента как неизменную (хотя это не), и когда вам нужно обновить состояние, убедитесь, что вы предоставляете новую ссылку для каждого свойства в состоянии.
class ContactInfo extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      address: {
        city: 'New York',
        street: 'Chrown Str'
      }
    }
  }
  onStreetChange(city) {
    this.setState({
      address: { city, street: this.state.street }
    })
  }   
  onStreetChange(street) {
    this.setState({
      address: { street, city: this.state.city }
    })
  }
  render() {
    return 

{this.props.contactName}

this.onCityChange(e.target.value)} value={this.state.address.city} /> this.onStreetChange(e.target.value)} value={this.state.address.street} />
} } const App = (props) => { return
{/* The ContactInfo components receives a props object like { contactName: "Richard" } */}
} ReactDOM.render( , document.querySelector('#main') )

В приведенном выше примере обратите внимание, как состояние обновляется с новым Адрес Объект на каждом изменении – это позволяет избежать пропуска обновлений, когда Rect.Purecomponent Используется – это просто компонент реагирования, который только повторно отображает, когда он получает новые значения для реквизит и для состояния (он неглубоко сравнивает старые и новые объекты реквизит и старые и новые государственные объекты).

Кроме того, Rect поддерживает функциональные компоненты, которые не могут иметь состояние и называются соответствующими реквизит объект.

Понимание реквизит и состояние имеет решающее значение для того, чтобы быть продуктивным с реагированными.

Управляемые компоненты

Еще одна мощная концепция в Adction Apps – контролируемые реквизиты – в основном означает компоненты не хранить промежуточное состояние для контролируемых реквирей (например, при обновлении значения внутри ввода текста), а скорее на каждом изменении, они уведомляют компонент владельца изменения, поэтому владелец может повторно Визуализируйте контролируемый компонент с обновленными значениями для реквизитов.

// controlled input


// uncontrolled input

Вышеуказанные входы являются примером контролируемых компонентов (уже запеченных в реакцию), но в основном это основной сигнал: неконтролируемые компоненты используют свое внутреннее состояние для обновления их UI, в то время как контролируемые компоненты всегда показывают значения из реквизитов. В результате, когда компоненты владельца решают не перезаписать контролируемый компонент, даже если пользователь может взаимодействовать с компонентом (например, текстовым входом), ничего не произойдет, и не будет никаких изменений в пользовательском интерфейсе.

Универсальная платформа

Как только вы получите похвалу в реакцию и реактивный способ мышления в УВ, вы вдруг осознаете все эти знания могут быть применены к UIS повсюду, а не только в Интернете. И красота из них заключается в том, что во время того времени вы можете стать продуктивным в строительстве родных рабочих пользовательских систем для мобильных или настольных операционных систем, или даже для WebVR, теперь, когда реагирование становится широко принятым, с библиотеками, написанными на целевых платформах, но с одним Общий способ мышления на УВ – декларативный и компонентный.

В то время как старый лозунг Java «пишут один раз, запустите везде», не подходит для пользовательских интерфейсов приложений, написанных в Java, реагировать новый подход «Узнать один раз, писать где-нибудь», действительно продуктивно и изменяется в жизнь.

Реагирование предлагает истинно «Узнайте один раз, напишите где-нибудь»!

Я хотел бы услышать, как вы взяли реагировать! Сколько времени понадобилось, чтобы вы были знакомы с этим? А как насчет производительности, как только вы его схватили?