Я пишу это с опозданием на несколько недель, но хотел сохранить серию.

День 21. Учимся писать JSON-объекты

  • Я начал учиться писать объекты JSON, работая над завершением демонстрации своего сайта социальной сети (ранее известного как ComicBB).
  • Я узнал, что вы можете сфокусировать текстовый ввод по его ссылке и вызвать на нем фокус. (но позже узнал, что использование «ref» в reactjs устарело.
componentDidMount() {
    this.focusNameInputField();
}
focusNameInputField() {
     this.refs.usernameField.focus();
 }
<TextField
 ref=”usernameField”
 style={styles.textField}
 floatingLabelText=”Username”
 floatingLabelFixed={true}
 />

День 22. Прислушиваемся к советам людей, которые уже это сделали.

Я узнал о propTypes, они используются для проверки свойств, которые, как ожидается, получит реагирующий компонент, и типа данных, которые они должны получить.



День 23. «Если ты не используешь это, ты это теряешь»

Я добавлял firebase в свой проект социальной сети и забыл, как настроить firebase. Я не делал заметок в первый раз, когда использовал его, и мне пришлось вернуться и посмотреть пример проекта, который я использовал раньше. (не забуду снова делать заметки).

День 24–25

Я начал изучать Redux, думая, что он мне понадобится при работе над моим проектом (ComicBB), потому что я не знал, как проверить аутентификацию в других компонентах. К счастью, позже в тот же день я понял, что модуль «Re-base», который я использовал для получения информации о Firebase, имеет метод аутентификации.

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

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

На этой неделе я в основном столкнулся с проблемой при попытке выяснить аутентификацию, опубликовать информацию в моей базе данных firebase и получить эти данные из промисов ES6.

Я начал практиковать жизненные циклы компонентов в reactJS и узнал, что «componentDidMount» — лучшее место для применения изменения состояния, а не внутри рендеринга. В моем приложении Street Fighter, которое я сделал ранее, я добавил несколько функций в функцию рендеринга, и это было очень медленно при переключении между персонажами. Но я не вижу этого заикания при вызове функций из componentDidMount. Приведенный ниже код — это то, что я использовал для настройки лайков, избранного и комментариев для каждого сообщения.

componentDidMount() {
let post_likes = this.props.post.likes;
let post_favs = this.props.post.favorites;
let post_comments = this.props.post.comments || [];
auth.onAuthStateChanged(user => {
console.log(user);
if (user) {
this.setState({
loggedIn: true,
user: {
...this.state.user,
email: user.email,
avatar: user.photoURL
},
likes: post_likes,
favorites: post_favs,
comments: post_comments
}, function () {
//check the post likes if the user liked it
if(this.state.likes && this.state.likes.includes(this.state.user.email)){
this.setState({
liked: true
});
} else {
this.setState({
liked: false
});
}
if (this.state.favorites && this.state.favorites.includes(this.state.user.email)) {
this.setState({
favorited: true
});
} else {
this.setState({
favorited: false
});
}
});
}
});
}

Вот ссылка на WIP-версию моего проекта в социальной сети.