Легко создавать компоненты React, которые полностью лишены это Анкет
Вы можете помнить меня как психопата, который написал переосмысление JavaScript: Полное устранение и искоренение JavaScript это
Ну, я вернулся, и на этот раз у меня есть новый компонент React для вас!
Я подписываюсь на образ мышления Дугласа Крокфорда.
«Есть несколько (функций), которые, как мы знаем, будут плохими. Худший – это класс. Класс был самой запрошенной новой функцией в JavaScript. И все запросы поступили от программистов Java, которые должны программировать в JavaScript и не хотят научиться это сделать. Таким образом, они хотели что -то, похожее на Java, чтобы они могли быть удобнее. Эти люди пойдут на свои могилы, не зная, насколько они мимолетны. ” – Дуглас Крокфорд
И точно так же, как Дуглас Крокфорд обнаружил, что его программы улучшились, когда он перестал использовать это, я обнаружил, что это верно и в моем коде.
«Я был очень удивлен, обнаружив, что мои программы стали лучше. Это не было трудно не использовать это Анкет Это было на самом деле преимущество. Мои программы стали меньше и проще, и вы знаете, это то, что мы все ищем » – Дуглас Крокфорд
Несмотря на это, я понимаю, что нет шансов на то, что я передуманете, потому что …
«Программисты так же эмоциональны и иррациональны, как и нормальные люди. Поэтому, когда решение наконец прибудет, большинство из нас отвергнут его . ” — Дуглас Крокфорд
Это не просто анекдотическое утверждение. Крокфорд продолжает предоставлять реальные примеры, такие как …
“Поколости потребовалось, чтобы согласиться с тем, что Гото была плохой идеей. Мы страстно спорили, эмоционально в течение 2 десятилетий о том, следует ли мы использовать Goto или нет ». — Дуглас Крокфорд
Ну, это это Goto JavaScript, и я понимаю, что он не уйдет в одночасье. Но я хотел бы надеяться, что у нас не займет два десятилетия, как Goto Анкет
React имеет функциональный компонент, но самый популярный способ создания компонентов React – это создание класса и продлить с Реагировать. Компонент и Класс приходит с это Анкет
Затем я спросил себя, что если бы я мог использовать Реагировать. Компонент но без это Анкет И вот как Не это. Компонент был рожден.
Вы заметите Не это. Компонент используется таким образом, знакомым Реагировать. Компонент Анкет Контекст, который вы ранее получили бы через это, доступен в качестве первого аргумента функции.
import React from 'react'
import NoThis from 'nothis-react'
class Counter extends NoThis.Component {
state = { count: 0 }
increment(ctx) {
ctx.setState(state => ({ count: state.count + 1 }))
}
render(ctx) {
return (
)
}
}
Приращение и рендер стали чистыми функциями, действуя только на их входных данных!
Если вы любите разрушать столько же, сколько и я, то теперь станет возможным!
import React from 'react'
import NoThis from 'nothis-react'
class Counter extends NoThis.Component {
state = { count: 0 }
increment({ setState }) {
setState(({ count }) => ({ count: count + 1 }))
}
render({ increment, state: { count } }) {
return (
)
}
}
Теперь это какой -то сексуальный код.
Функция может быть исключена из Nothis написав это как собственность класса.
class Counter extends NoThis.Component {
increment = () => {
this.setState(({ count }) => ({ count: count + 1 }))
}
}
Это какой -то экспериментальный будущий код, поэтому относитесь к нему как к такому. Пожалуйста, играйте с ним и сообщите о любых ошибках или функциях запроса на GitHub Repo Анкет
Присоединяйтесь к #nothis Движение и Ударь меня на твити Анкет
Если вы ненавидите эту статью, вы также можете их ненавидеть:
- I ❤ Ramda – частичное применение со специальным заполнителем
- Функциональное программирование: Альтернативы IF #functional #Javascript #FONCORS
- Держите свой код тупым
# не это
Оригинал: “https://dev.to/joelnet/creating-react-components-without-this-nothis-1d22”