Реагируйте на передовой собственный опыт: функции bind () и стрелки в 2020 году - PullRequest
0 голосов
/ 29 апреля 2020

Я знаю, что уже есть некоторые темы об этом, но я не смог найти реальную. Итак, мой вопрос, должен ли я всегда использовать подход связывания или функции стрелок? Каковы плюсы / минусы их в 2020 году? Из того, что я прочитал, я знаю, что (по крайней мере, в 2018 году) методы связывания имели лучшую производительность. Другой вопрос: я должен просто связать функции, которые я вызываю, использовать в методе рендеринга через щелчок? Вот небольшой пример

constructor(super) {
props(super)

this.firstBind = this.firstBind.bind(this);
this.secondBind = this.secondBind.bind(this;
}

render() {
return (
<Button title="First Bind" onClick={this.firstBind} />
<Button title="First arrow" onClick={this.firstArrow} />
)
}

firstArrow = () => {
//some outout
}

secondArrow = async() => {
//fetch some data from a database and output it
}
secondBind() {
//some output
}
async secondBind() {
//fetch some data from a database and output it
}

Моя цель - понять это полностью. Большое спасибо! Jan

1 Ответ

1 голос
/ 29 апреля 2020

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

Функции связывания и стрелки достигают того же в компоненте React

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

Но почему тогда существует два способа создания связанных функций?

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

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

Хорошо, что вы должны делать?

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

Так что TL: DR в 2020 году: этот вопрос больше не актуален, go используйте f нецелевые компоненты с крючками и у вас не возникнет проблем

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