Статьи

Понимание форм и событий в действии

В этом уроке вы узнаете о формах и событиях в React. Мы начнем с создания простого приложения на основе React, а затем добавим форму и некоторые элементы. Затем мы увидим, как добавлять события в элементы формы.

Если вы новичок в React, я бы рекомендовал прочитать вводное руководство по React, чтобы начать .

Давайте начнем с настройки нашего веб-приложения React. Создайте папку проекта с именем ReactFormApp . Внутри ReactFormApp создайте файл index.html и добавьте следующий HTML-код:

01
02
03
04
05
06
07
08
09
10
11
12
<html>
 
<head>
    <title>TutsPlus — React Forms & Events</title>
</head>
 
<body>
    <div id=»app»></div>
    <script src=»bundle.js»></script>
</body>
 
</html>

Инициализируйте проект с помощью Node Package Manager (npm).

1
npm init

Заполните необходимые данные, и вы должны иметь файл package.json в папке ReactFormApp .

01
02
03
04
05
06
07
08
09
10
11
{
  «name»: «reactformapp»,
  «version»: «1.0.0»,
  «description»: «»,
  «main»: «index.js»,
  «scripts»: {
    «test»: «echo \»Error: no test specified\» && exit 1″
  },
  «author»: «»,
  «license»: «ISC»
}

Установите зависимости react и react-dom помощью npm.

1
npm install react react-dom —save

Установите необходимый пакет babel с помощью npm и сохраните его в файле package.json .

1
npm install —save-dev webpack webpack-dev-server babel-core babel-loader babel-preset-react babel-preset-es2015

Для преобразования кода JSX в JavaScript требуются пакеты babel .

Создайте файл конфигурации веб-пакета для обработки конфигураций веб-пакета. Создайте файл с именем webpack.config.js и добавьте следующие конфигурации:

01
02
03
04
05
06
07
08
09
10
11
12
13
module.exports = {
  entry: ‘./app.js’,
 
  output: {
    filename: ‘bundle.js’,
  },
 
  module: {
    loaders: [
      { exclude: /node_modules/, loader: ‘babel-loader?presets[]=es2015&presets[]=react’ }
    ]
  }
}

app.js — это файл, в котором будет находиться наш код React. Создайте файл с именем app.js в папке ReactFormApp . Импортируйте необходимые библиотеки реагирования в app.js Создайте компонент с именем App имеющий div с некоторым текстом. Рендеринг компонента с использованием метода рендеринга. Вот как будет выглядеть основной файл app.js :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
import React from ‘react’
import { render } from ‘react-dom’
 
var App = React.createClass({
  render:function(){
    return(
      <div>
        TutsPlus — Welcome to React Form App
      </div>
    );
  }
});
 
render((
    <App />
    ),document.getElementById(‘app’))

Сохраните изменения и попробуйте перезагрузить сервер разработки веб-пакетов.

1
webpack-dev-server

После перезапуска сервера вы сможете увидеть приложение React, работающее по адресу http: // localhost: 8080 / .

Экран отображения приложения React Form

У нас есть базовое приложение React, давайте перейдем к следующему шагу и попробуем создать компонент формы, используя код JSX в app.js

Создайте компонент с именем FormComp внутри app.js

1
2
3
4
5
6
var FormComp = React.createClass({
    render:function(){
        return(
        );
    }
})

Внутри функции рендеринга для FormComp мы определим HTML-код для создания формы. Мы добавим пару ярлыков, поля ввода и кнопку для нажатия. Вот как это выглядит:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var FormComp = React.createClass({
    render:function(){
        return(
            <div>
 
                <h2>TutsPlus — React Form Tutorial</h2>
                <hr />
                 
                <label>First Name: </label>
                <input type=»text» />
                <br />
 
                <label>Last Name: </label>
                <input type=»text» />
                <br />
 
                <input type=»button» value=»Submit» />
 
                <hr />
            </div>
        );
    }
})

Визуализируйте компонент формы FormComp чтобы отобразить форму внутри index.html .

1
2
3
render((
   <FormComp />
   ),document.getElementById(‘app’))

Сохраните изменения и перезапустите сервер веб-пакетов, и вы сможете увидеть форму.

React App Form Tutorial

Наша форма React находится в хорошей форме. Чтобы заставить его взаимодействовать, нам нужно добавить события в форму.

Мы начнем с добавления переменных состояния в каждое из полей ввода, чтобы мы могли прочитать значения полей ввода. Давайте установим переменные состояния для имени и последнего входного текстового поля.

1
2
<input type=»text» value = {this.state.fName} />
<input type=»text» value = {this.state.lName} />

Обязательно установите начальное состояние для указанных выше переменных. Определите функцию getInitialState внутри компонента FormComp и инициализируйте обе переменные.

1
2
3
getInitialState: function () {
      return {lName: »,fName:»};
},

Нам нужно обработать событие on-change полей ввода и назначить переменные состояния при изменении значения в текстовых полях. Поэтому определите событие onChange в полях ввода.

1
2
<input type=»text» value = {this.state.fName} onChange={this.handleFNameChange} />
<input type=»text» value = {this.state.lName} onChange={this.handleLNameChange} />

Определите функции onChange внутри FormComp и установите переменные состояния.

1
2
3
4
5
6
7
handleFNameChange:function(event){
        this.setState({fName: event.target.value});
},
 
handleLNameChange:function(event){
     this.setState({lName: event.target.value});
}

Давайте попробуем отобразить переменные состояния, используя их. Внутри FormComp HTML добавьте следующий элемент, отображающий переменные состояния.

1
<h3>Your full name is </h3> {this.state.fName} {this.state.lName}

Сохраните изменения и перезапустите сервер веб-пакетов. Попробуйте ввести текст в поля ввода имени и фамилии, и вы сможете увидеть результаты сразу после ввода.

Заполните форму заявки

Далее, давайте добавим событие нажатия на кнопку отправки, которая есть в нашей форме.

1
<input type=»button» onClick={this.handleClick} value=»Submit» />

Определите функцию handleClick внутри компонента FormComp . Нажав кнопку «Отправить», мы объединяем имя и фамилию и отображаем полное имя внутри формы. Вот функция handleClick :

1
2
3
4
handleClick:function(){
       var fullName = this.state.fName + ‘ ‘ + this.state.lName;
    this.setState({Name:fullName});
},

Кроме того, инициализируйте переменную Name в функции getInitialState .

1
2
3
getInitialState: function () {
     return {lName: »,fName:»,Name:»};
}

Отобразите объединенное полное имя в форме HTML.

1
<h3>Your full name is </h3> {this.state.Name}

Вот как выглядит окончательный компонент FormComp :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var FormComp = React.createClass({
 
 
    getInitialState: function () {
      return {lName: »,fName:»,Name:»};
    },
 
    handleFNameChange:function(event){
      this.setState({fName: event.target.value});
    },
 
    handleLNameChange:function(event){
      this.setState({lName: event.target.value});
    },
 
    handleClick:function(){
        var fullName = this.state.fName + ‘ ‘ + this.state.lName;
        this.setState({Name:fullName});
    },
 
    render:function(){
        return(
            <div>
                <h2>TutsPlus — React Form Tutorial</h2>
                <hr />
 
                <label>First Name: </label>
                <input type=»text» value = {this.state.fName} onChange={this.handleFNameChange} />
                <br />
 
                <label>Last Name: </label>
                <input type=»text» value = {this.state.lName} onChange={this.handleLNameChange} />
                <br />
 
                <input type=»button» onClick={this.handleClick} value=»Submit» />
 
                <hr />
 
                <h3>Your full name is </h3> {this.state.Name}
            </div>
        );
    }
})

Сохраните вышеуказанные изменения и перезапустите сервер разработки. Введите оба имени и нажмите кнопку отправки, после чего должно отобразиться полное имя.

В этом руководстве по React вы узнали, как начать создавать приложения React, и поняли основные принципы работы с формами и событиями в веб-приложении на основе React. Я надеюсь, что это руководство поможет вам начать создавать приложения на основе React.

Исходный код из этого урока доступен на GitHub .

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