@
Символ в дійсності вираз JavaScript пропонується в даний час для позначення декораторів :
Декоратори дозволяють коментувати та змінювати класи та властивості під час проектування.
Ось приклад налаштування Redux без і з декоратором:
Без декоратора
import React from 'react';
import * as actionCreators from './actionCreators';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
function mapStateToProps(state) {
return { todos: state.todos };
}
function mapDispatchToProps(dispatch) {
return { actions: bindActionCreators(actionCreators, dispatch) };
}
class MyApp extends React.Component {
// ...define your main app here
}
export default connect(mapStateToProps, mapDispatchToProps)(MyApp);
Використання декоратора
import React from 'react';
import * as actionCreators from './actionCreators';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
function mapStateToProps(state) {
return { todos: state.todos };
}
function mapDispatchToProps(dispatch) {
return { actions: bindActionCreators(actionCreators, dispatch) };
}
@connect(mapStateToProps, mapDispatchToProps)
export default class MyApp extends React.Component {
// ...define your main app here
}
Обидва приклади вище рівнозначні, це лише питання переваги. Крім того, синтаксис декоратора ще не вбудований у будь-який час виконання Javascript і все ще експериментальний і може змінюватися. Якщо ви хочете використовувати його, він доступний за допомогою Babel .