이 @
심볼은 실제로 데코레이터 를 나타 내기 위해 현재 제안 된 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 을 사용하십시오 .