Я изучаю Redux с React и наткнулся на этот код. Я не уверен, если это специфичным для Redux или нет, но я видел следующий фрагмент кода в одном из примеров.
@connect((state) => {
return {
key: state.a.b
};
})
Хотя функциональность connect
довольно проста, но я не понимаю, @
прежде чем connect
. Это даже не оператор JavaScript, если я не ошибаюсь.
Может кто-нибудь объяснить, пожалуйста, что это такое и почему оно используется?
Обновить:
Фактически это часть, react-redux
которая используется для подключения компонента React к хранилищу Redux.
javascript
reactjs
decorator
redux
Салман
источник
источник
Ответы:
@
Символ в действительности выражение JavaScript предлагается в настоящее время для обозначения декораторов :Вот пример настройки Redux без и с декоратором:
Без декоратора
Использование декоратора
Оба приведенных выше примера эквивалентны, это просто вопрос предпочтений. Кроме того, синтаксис декоратора еще не встроен ни в одну среду исполнения Javascript и все еще является экспериментальным и может быть изменен. Если вы хотите использовать его, он доступен с помощью Babel .
источник
@connect(state => ({todos: state.todos}), dispatch => ({actions: bindActionCreators(actionCreators, dispatch)}))
Очень важно!
Эти реквизиты называются реквизитами состояния, и они отличаются от обычных реквизитов, любое изменение в реквизитах состояния вашего компонента будет снова и снова запускать метод рендеринга компонента, даже если вы не используете эти реквизиты, поэтому в целях повышения производительности попытайтесь привязать только к вашему компоненту реквизиты состояния, которые вам нужны внутри вашего компонента, и, если вы используете субпроп, привязывайте только эти реквизиты.
пример: скажем, внутри вашего компонента вам нужно только два реквизита:
не делай этого
сделай это
источник