SlideShare a Scribd company logo
React.js
Что это?
• Это лишь библиотека представления (V из MVC)
Virtual DOM
• Что такое DOM
• Проблема DOM
• Virtual DOM
JSX и компоненты
import React from "react";
import InitPanel from "../../common/panel/init/InitPanel.jsx";
import Sidebar from "../../sidebar/Sidebar";
import Footer from "../../footer/Footer";
import Alert from "../../common/alert/Alert";
import "./App.scss";
export default class App extends React.Component {
render() {
return (
<div className=“App">
<Sidebar userName=“Вася Пупкин« />
<Main />
<Footer />
</div>
);
}
}
import React from "react";
import Nav from "./nav/Nav";
import User from "./user/User";
import Logo from "./logo/Logo";
import "./Sidebar.scss";
export default class Sidebar extends React.Component {
render() {
const {userName} = this.props;
return (
<div className="Sidebar">
<Logo />
Привет {userName}
<Nav />
</div>
);
}
}
State и Props
State
• Изменяемые данные внутри компонента
• Когда state изменяется, компонент перерисовывается
import React from "react";
import "./Counter.scss";
export default class Counter extends React.Component {
constructor() {
syper();
this.state = {
count: 0,
}
}
incCount(){
this.setState({count: this.state + 1})
}
render() {
const {count} = this.state;
return (
<div className="Counter">
<div className="Counter--data">{count}</div>
<a onClick={this.incCount}>+1</a>
</div>
);
}
}
Props
• Передаются от родительского к дочернему компоненту
• Могут быть любым типо данных
• Иммутабельны
import React from 'react';
export default class Name extends React.Component {
static propsTypes: {
name: React.PropTypes.string.isRequired,
}
render() {
const {name} = this.props;
return (
<span>{name}</span>
);
}
}
Жизненный цикл React компонента
• componentWillMount
• componentDidMount
• componentWillReceiveProps
• componentWillUpdate
• componentDidUpdate
• componentWillUnmount
import React from "react";
export default class Line extends React.Component {
componentWillMount(){
//
}
componentDidMount(){
//
}
componentWillReceiveProps(){
//
}
componentWillUpdate(){
//
}
componentDidUpdate(){
//
}
componentWillUnmount(){
//
}
render() {
//
}
}
ReactRouter
import React from "react";
import {Router, Route, IndexRoute, browserHistory} from "react-router";
import App from "./content/main/App";
import Bloggers from "./content/main/bloggers/Bloggers";
import Blogger from "./content/main/blogger/Blogger";
const routes = (
<Route>
<Route path='/' component={App}>
<IndexRoute component={Bloggers}/>
<Route path='blogger/:id' component={Blogger}/>
</Route>
</Route>
);
export default class Root extends React.Component {
render() {
return <Router history={browserHistory} routes={routes}/>;
}
}

More Related Content

What's hot

Angular 2 vs Angular 1
Angular 2 vs Angular 1Angular 2 vs Angular 1
Angular 2 vs Angular 1
GDG Odessa
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
Andrii Dzynia
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
SQALab
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
Fwdays
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSГлеб Тарасов
 
Rambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOSRambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOS
RAMBLER&Co
 
VIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллектаVIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллекта
SQALab
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ontico
 
VIQA Web UI Testing Tool
VIQA Web UI Testing ToolVIQA Web UI Testing Tool
VIQA Web UI Testing Tool
Роман Иовлев
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
Ontico
 
сервисы в Angular js
сервисы в Angular jsсервисы в Angular js
сервисы в Angular js
yakimchuk
 
Браузерные помощники тестировщика (QA Fest 2016)
Браузерные помощники тестировщика (QA Fest 2016)Браузерные помощники тестировщика (QA Fest 2016)
Браузерные помощники тестировщика (QA Fest 2016)
Alexander Nedeliaev
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)
Ontico
 
Быстрее света. UA Mobile 2016.
Быстрее света. UA Mobile 2016.Быстрее света. UA Mobile 2016.
Быстрее света. UA Mobile 2016.
UA Mobile
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
RAMBLER&Co
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
Mail.ru Group
 
Mobile Automation based on Appium
Mobile Automation based on AppiumMobile Automation based on Appium
Mobile Automation based on Appium
Anton Sirota
 
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QAFest
 
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QAFest
 
Андрей Стахиевич - Appium Mobile Automation Tool
Андрей Стахиевич - Appium Mobile Automation ToolАндрей Стахиевич - Appium Mobile Automation Tool
Андрей Стахиевич - Appium Mobile Automation Tool
QA Club Minsk
 

What's hot (20)

Angular 2 vs Angular 1
Angular 2 vs Angular 1Angular 2 vs Angular 1
Angular 2 vs Angular 1
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
 
Rambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOSRambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOS
 
VIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллектаVIQA - Тестирование UI с помощью Виртуального интеллекта
VIQA - Тестирование UI с помощью Виртуального интеллекта
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
 
VIQA Web UI Testing Tool
VIQA Web UI Testing ToolVIQA Web UI Testing Tool
VIQA Web UI Testing Tool
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
сервисы в Angular js
сервисы в Angular jsсервисы в Angular js
сервисы в Angular js
 
Браузерные помощники тестировщика (QA Fest 2016)
Браузерные помощники тестировщика (QA Fest 2016)Браузерные помощники тестировщика (QA Fest 2016)
Браузерные помощники тестировщика (QA Fest 2016)
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)
 
Быстрее света. UA Mobile 2016.
Быстрее света. UA Mobile 2016.Быстрее света. UA Mobile 2016.
Быстрее света. UA Mobile 2016.
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
 
Mobile Automation based on Appium
Mobile Automation based on AppiumMobile Automation based on Appium
Mobile Automation based on Appium
 
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
 
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
 
Андрей Стахиевич - Appium Mobile Automation Tool
Андрей Стахиевич - Appium Mobile Automation ToolАндрей Стахиевич - Appium Mobile Automation Tool
Андрей Стахиевич - Appium Mobile Automation Tool
 

Viewers also liked

Nutrição qual é a sua
Nutrição qual é a suaNutrição qual é a sua
Nutrição qual é a sua
Ionara Urrutia Moura
 
CURSOS SPED: O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...
CURSOS SPED:   O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...CURSOS SPED:   O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...
CURSOS SPED: O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...
Professor Edgar Madruga
 
Santiago h.
Santiago h.Santiago h.
Santiago h.
pertileivan
 
Editorial ruminantes n.6 (jan fev 2009)
Editorial ruminantes n.6 (jan   fev 2009)Editorial ruminantes n.6 (jan   fev 2009)
Editorial ruminantes n.6 (jan fev 2009)
Roberto Arruda
 
009 10 - alteração planilha pg
009 10 - alteração planilha pg009 10 - alteração planilha pg
009 10 - alteração planilha pg
Projeto Rondon
 
Portada u
Portada uPortada u
Portada u
Diego Ortiz
 
Os dez mandamentos
Os dez mandamentosOs dez mandamentos
Os dez mandamentos
Mensagens Virtuais
 
ONG ABRACC - Combate ao Câncer Infantil
ONG ABRACC -   Combate ao Câncer InfantilONG ABRACC -   Combate ao Câncer Infantil
ONG ABRACC - Combate ao Câncer Infantil
ABRACC
 
Pato fu maxximum - sony bmg - 2005
Pato fu   maxximum - sony bmg - 2005Pato fu   maxximum - sony bmg - 2005
Pato fu maxximum - sony bmg - 2005
coletaneajovem
 
Prá gente miúda
Prá gente miúdaPrá gente miúda
Prá gente miúda
pragente miuda
 
Interseg
IntersegInterseg
Interseg
Raphael Santos
 
Residencia de Ancianos
Residencia de AncianosResidencia de Ancianos
Residencia de Ancianos
MaribelCarmen
 
His m04t26
His m04t26His m04t26
His m04t26
Andrea Cortelazzi
 
Actividades da AEGV
Actividades da AEGVActividades da AEGV
Actividades da AEGV
Vitor Silva
 
Gpn marcha
Gpn marchaGpn marcha
Gpn marcha
Dyment1
 
Cómo comprar Para Obtener Una Licuadora
Cómo comprar Para Obtener Una LicuadoraCómo comprar Para Obtener Una Licuadora
Cómo comprar Para Obtener Una Licuadora
licuadorabatidosverdes69
 
Bruno crasto
Bruno crastoBruno crasto
Bruno crasto
acmaia
 

Viewers also liked (20)

Nutrição qual é a sua
Nutrição qual é a suaNutrição qual é a sua
Nutrição qual é a sua
 
CURSOS SPED: O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...
CURSOS SPED:   O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...CURSOS SPED:   O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...
CURSOS SPED: O APAGAO DA NOTA FISCAL ELETRONICA - MATERIA JORNAL DCI - 28-0...
 
Santiago h.
Santiago h.Santiago h.
Santiago h.
 
Editorial ruminantes n.6 (jan fev 2009)
Editorial ruminantes n.6 (jan   fev 2009)Editorial ruminantes n.6 (jan   fev 2009)
Editorial ruminantes n.6 (jan fev 2009)
 
5
55
5
 
Corpo humano
Corpo humanoCorpo humano
Corpo humano
 
009 10 - alteração planilha pg
009 10 - alteração planilha pg009 10 - alteração planilha pg
009 10 - alteração planilha pg
 
Portada u
Portada uPortada u
Portada u
 
Edificio 2 (1)
Edificio 2 (1)Edificio 2 (1)
Edificio 2 (1)
 
Os dez mandamentos
Os dez mandamentosOs dez mandamentos
Os dez mandamentos
 
ONG ABRACC - Combate ao Câncer Infantil
ONG ABRACC -   Combate ao Câncer InfantilONG ABRACC -   Combate ao Câncer Infantil
ONG ABRACC - Combate ao Câncer Infantil
 
Pato fu maxximum - sony bmg - 2005
Pato fu   maxximum - sony bmg - 2005Pato fu   maxximum - sony bmg - 2005
Pato fu maxximum - sony bmg - 2005
 
Prá gente miúda
Prá gente miúdaPrá gente miúda
Prá gente miúda
 
Interseg
IntersegInterseg
Interseg
 
Residencia de Ancianos
Residencia de AncianosResidencia de Ancianos
Residencia de Ancianos
 
His m04t26
His m04t26His m04t26
His m04t26
 
Actividades da AEGV
Actividades da AEGVActividades da AEGV
Actividades da AEGV
 
Gpn marcha
Gpn marchaGpn marcha
Gpn marcha
 
Cómo comprar Para Obtener Una Licuadora
Cómo comprar Para Obtener Una LicuadoraCómo comprar Para Obtener Una Licuadora
Cómo comprar Para Obtener Una Licuadora
 
Bruno crasto
Bruno crastoBruno crasto
Bruno crasto
 

Similar to Introduction to React

#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
JSFestUA
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеГлеб Тарасов
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
DataArt
 
Экскурсия по Flutter SDK
Экскурсия по Flutter SDKЭкскурсия по Flutter SDK
Экскурсия по Flutter SDK
Sergey Penkovsky
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
AvitoTech
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийGoSharp
 
"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков
Fwdays
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
Eugene Zharkov
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Ontico
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Kirill Chebunin
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
Oleksii Okhrymenko
 
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,..."Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
it-people
 
Vuejs composition API
Vuejs composition APIVuejs composition API
Vuejs composition API
Michail Kuznetsov
 
Коротко о React.js
Коротко о React.jsКоротко о React.js
Коротко о React.js
Mad Devs
 
Разработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, ShturmannРазработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, Shturmann
yaevents
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
it-people
 

Similar to Introduction to React (20)

#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Экскурсия по Flutter SDK
Экскурсия по Flutter SDKЭкскурсия по Flutter SDK
Экскурсия по Flutter SDK
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложений
 
"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
 
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,..."Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
 
Vuejs composition API
Vuejs composition APIVuejs composition API
Vuejs composition API
 
Коротко о React.js
Коротко о React.jsКоротко о React.js
Коротко о React.js
 
Разработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, ShturmannРазработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, Shturmann
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
 

Introduction to React

  • 2. Что это? • Это лишь библиотека представления (V из MVC)
  • 3. Virtual DOM • Что такое DOM • Проблема DOM • Virtual DOM
  • 5. import React from "react"; import InitPanel from "../../common/panel/init/InitPanel.jsx"; import Sidebar from "../../sidebar/Sidebar"; import Footer from "../../footer/Footer"; import Alert from "../../common/alert/Alert"; import "./App.scss"; export default class App extends React.Component { render() { return ( <div className=“App"> <Sidebar userName=“Вася Пупкин« /> <Main /> <Footer /> </div> ); } }
  • 6. import React from "react"; import Nav from "./nav/Nav"; import User from "./user/User"; import Logo from "./logo/Logo"; import "./Sidebar.scss"; export default class Sidebar extends React.Component { render() { const {userName} = this.props; return ( <div className="Sidebar"> <Logo /> Привет {userName} <Nav /> </div> ); } }
  • 7.
  • 9. State • Изменяемые данные внутри компонента • Когда state изменяется, компонент перерисовывается
  • 10. import React from "react"; import "./Counter.scss"; export default class Counter extends React.Component { constructor() { syper(); this.state = { count: 0, } } incCount(){ this.setState({count: this.state + 1}) } render() { const {count} = this.state; return ( <div className="Counter"> <div className="Counter--data">{count}</div> <a onClick={this.incCount}>+1</a> </div> ); } }
  • 11. Props • Передаются от родительского к дочернему компоненту • Могут быть любым типо данных • Иммутабельны
  • 12. import React from 'react'; export default class Name extends React.Component { static propsTypes: { name: React.PropTypes.string.isRequired, } render() { const {name} = this.props; return ( <span>{name}</span> ); } }
  • 13. Жизненный цикл React компонента • componentWillMount • componentDidMount • componentWillReceiveProps • componentWillUpdate • componentDidUpdate • componentWillUnmount
  • 14. import React from "react"; export default class Line extends React.Component { componentWillMount(){ // } componentDidMount(){ // } componentWillReceiveProps(){ // } componentWillUpdate(){ // } componentDidUpdate(){ // } componentWillUnmount(){ // } render() { // } }
  • 16. import React from "react"; import {Router, Route, IndexRoute, browserHistory} from "react-router"; import App from "./content/main/App"; import Bloggers from "./content/main/bloggers/Bloggers"; import Blogger from "./content/main/blogger/Blogger"; const routes = ( <Route> <Route path='/' component={App}> <IndexRoute component={Bloggers}/> <Route path='blogger/:id' component={Blogger}/> </Route> </Route> ); export default class Root extends React.Component { render() { return <Router history={browserHistory} routes={routes}/>; } }