React結合Redux的使用css
全局安裝create-react-appreact
npm install -g create-react-app
建立目錄npm
create-react-app react-redux
進入目錄redux
cd react-redux
運行app
npm start
裝到配置文件裏面dom
npm install react-redux --save
若是這條命令安裝不上的話,能夠使用cnpm安裝;async
component文件夾,建立Calc.js文件ide
Calc.js import React from 'react'; const Calc = (props) => { let{number,onPlus,onMinus,onOdd,onAnync}=props; return ( <div> <span id="spanResult">{number}</span> <br/> <input id="btn1" type="button" value="plus" onClick={onPlus}/> <input id="btn2" type="button" value="minus" onClick={onMinus}/> <input id="btn3" type="button" value="if odd plus" onClick={onOdd}/> <input id="btn4" type="button" value="anync plus" onClick={onAnync}/> </div> ); }; export default Calc;
container文件夾,建立CalcContainer.js文件spa
CalcContainer.js import React from 'react'; import Calc from '../component/Calc'; import {connect} from 'react-redux'; const mapStoreToProps=(state,ownProps)=>{ return{ number:state } } const mapDispatchToProps=((dispatch,ownProps)=>{ return{ onPlus:()=>{ dispatch({ type:"plus" }) }, onMinus:()=>{ dispatch({ type:"jian" }) }, onOdd:()=>{ dispatch({ type:"odd_plus" }) }, onAnync:()=>{ setTimeout(function(){ dispatch({ type:"async_plus" }) },1000) } } }) let CalcContainer=connect(mapStoreToProps,mapDispatchToProps)(Calc); export default CalcContainer;
reducer文件夾,建立index.js文件code
index.js function reducer(state=0,action){ switch(action.type){ case "plus":{ state=state+1; break; } case "jian":{ state=state-1; break; } case "odd_plus":{ if(state%2===1){ state+=1; } break; } case "async_plus":{ state=state+1; break; } default:{ break; } } return state; } export default reducer;
App.js文件
import React, { Component } from 'react'; import Calc from './component/Calc'; import CalcContainer from './container/CalcContainer'; class App extends Component { constructor(props){ super(); } render() { return ( <CalcContainer> <Calc /> </CalcContainer> ); } } export default App;
index.js文件
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import registerServiceWorker from './registerServiceWorker'; import {createStore} from 'redux'; import reducer from './reducer/index'; import {Provider} from 'react-redux'; let store =createStore(reducer); ReactDOM.render( <Provider store={store}> <App /> </Provider> , document.getElementById('root')); registerServiceWorker();
接下來就讓咱們看看效果吧: