普通写法
原来在组件中connect
连接redux的写法是:
import { connect } from 'react-redux'; import { start,stop,reset } from './actions'; class Home extends Component { ... // dispatch一个action this.props.dispatch(reset()); ... const mapStatetoProps = state => ({ timer: state.timer }) } export default connect(mapStatetoProps)(Home);
或者
import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import * as actions from './actions'; class Home extends Component { ... // dispatch一个action this.props.dispatch.reset(); ... const mapStatetoProps = state => ({ timer: state.timer }) const mapdispatchToProps = dispatch => ({ dispatch: bindActionCreators(actions,dispatch) }); } export default connect(mapStatetoProps,mapdispatchToProps)(Home);
文艺写法
因为@connect()
是超前的ES7
写法,所以需要使用babel
转码. 在react-native项目目录下创建.babelrc
文件,内容:
{ "presets": ["react-native"],"plugins": ["transform-decorators-legacy"] }
因为connect
是超前的ES7
写法,"plugins": ["transform-decorators-legacy"]
}
在组件中使用:
import { connect } from 'react-redux'; import { start,reset } from './actions'; @connect(state => ({ timer: state.timer })) class Home extends Component { ... // dispatch一个action this.props.dispatch(start()); ... } export default Home;
或者:
import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import * as actions from './actions'; @connect( state => ({ timer: state.timer }),dispatch => bindActionCreators(actions,dispatch),) class Home extends Component { ... // dispatch一个action this.props.reset(); ... } export default Home;
其中异同,可以console.log(this.props);
一下就能更清晰了.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。