# 100DaysOfCode: создание приложения на React (продолжение)…

Проект (1 час): продолжайте развивать приложение, добавляя компонент создания заметок, который синхронизирует реальное время с firebase. Запускайте события от корня для управления состоянием вместе с проверкой каждого компонента.

Весь код этого проекта можно найти на моем github

Шаг 1. Проверка с использованием PropTypes

Укажите необходимые / необязательные свойства и их тип данных для каждого компонента.

<Repos username={this.props.params.username} repos={this.state.repos}/>
propTypes: {
 username: React.PropTypes.string.isRequired,
 repos: React.PropTypes.array.isRequired
}

Здесь, если мы используем «Repos» без имени пользователя, он теперь выдаст ошибку на консоль. Добавьте аналогичную проверку для всех компонентов.

Шаг 2: Управление состоянием компонента

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

handleAddNote: function(newNote){
 this.ref.child(this.props.params.username).child(this.state.notes.ength).set(newNote)
}

Этот метод добавления «newNote» к дочернему элементу имени пользователя затем передается в качестве опоры компоненту Notes.

<Notes
username={this.props.params.username}
notes={this.state.notes}
addNote={this.handleAddNote} />

Не забудьте добавить его в PropTypes для проверки в Notes.js.

addNote: React.PropTypes.func.isRequired

Шаг 3. Добавьте компонент Note

Наконец, создайте простой компонент с текстовым полем и кнопкой, который позволяет вам добавлять заметки в хранилище данных firebase.

Событие onClick на кнопке здесь вызовет «handleSubmit», который получает состояние управляемой функции «addNote», передаваемое ему из профиля - ›Заметки -› AddNote

handleSubmit: function(){
 var newNote = this.note.value;
 this.note.value = ‘’; //Empty textbox
 this.props.addNote(newNote) 
 }

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

День 4 из # 100DaysOfCode DONE

Если вам это понравилось, нажмите 👏 , чтобы другим понравилось. Подписывайтесь на меня в Twitter @ HariniLabs, чтобы получать последние новости или просто поздороваться :)

PS: я курирую еженедельный информационный бюллетень # WomenInTech, чтобы получить немного вдохновения из мира технологий, и да, мужчины тоже могут подписаться! Получите здесь :)