要实现react组件与redux的连接用到第三方组件react-redux
8.入口组件
class App extends React.Component { render() { return ( <div> <HelloWorld msg="Hello World!" /> <ChToEngBtn/> </div> ) } }9.在入口组件外面包装Provider
const store = createStore(reducer) ReactDom.render( <Provider store = {store}> <App /> </Provider>, document.getElementById('example') );10.方面查看本人将所有的代码放在一个文件上取名为index.js
/** * @author:水痕 * @time:2017-03-01 18:34 * @email:332904234@qq.com * @version:1.0 * @fileName:index * @title: */ 'use strict'; import React from 'react' import ReactDom from 'react-dom' import { createStore } from 'redux' import {connect,Provider} from 'react-redux' class Hello extends React.Component { render() { return ( <span>{this.props.msg}</span> ) } } class Translate extends React.Component { render() { return ( <button onClick={this.props.sendMsg}>翻译中文</button> ) } } class ChToEng extends React.Component{ render(){ return( <button onClick={this.props.send}>翻译英文</button> ) } } const reducer = (state = {}, action) => { console.log('reducer init state ', state, ' action ', action); switch (action.type) { case 'chinese': return { state, msg: '您好,世界!' } case 'english': return { state, msg: "Hello World!" } default: return state } } const actions = { sendShowChineseMsg: () => ({ type: 'chinese' }), sendShowEnglishMsg: () => ({ type: 'english' }) } const mapHelloStateToProps = (state, ownProps) => { return { msg: state.msg ? state.msg : ownProps.msg } } const HelloWorld = connect(mapHelloStateToProps)(Hello) const mapTranslateDispatchToProps = (dispatch, ownProps) => { return { sendMsg: () => { dispatch(actions.sendShowChineseMsg()) //setTimeout(() => dispatch(actions.sendShowEnglishMsg()), 5000) } } } const chToEng1 = (dispatch,ownProps)=>{ return{ send:()=>{ dispatch(actions.sendShowEnglishMsg()); } } } const TranslateButton = connect(null, mapTranslateDispatchToProps)(Translate) const ChToEngBtn = connect(null,chToEng1)(ChToEng); class App extends React.Component { render() { return ( <div> <TranslateButton /> <HelloWorld msg="Hello World!" /> <ChToEngBtn/> </div> ) } } const store = createStore(reducer) ReactDom.render( <Provider store = {store}> <App /> </Provider>, document.getElementById('example') );