Redux的简单实例使用
1.首先命令安装 npm install redux react-redux --save
2.在项目中找到index.js
插入代码
import React from ‘react‘; import ReactDOM from ‘react-dom‘; import App from "./App" import ‘./index.css‘; import * as serviceWorker from ‘./serviceWorker‘; import { Provider } from "react-redux" import { createStore } from ‘redux‘ import rootReducer from ‘./reducers‘ // import Home from "./components/Home" const store = createStore(rootReducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()) ReactDOM.render( <Provider store={store}> <div> <App/> </div> </Provider>, document.getElementById("root") ) serviceWorker.unregister();
2.查看app.js
import React from ‘react‘; import ‘./App.css‘; import Home from "./components/Home" function App() { return ( <div className="App"> <Home></Home> </div> ); } export default App;
3.在src里面创建actions和reducers文件夹
4.actions文件夹下面创建2个index.js与counter.jsx文件
5.actions里面的index.jsx文件代码如下
import * as counterCreator from ‘./counter‘ export { counterCreator }
6.actions里面的counter.jsx文件代码如下
export function increment(){ return { type:‘INCREMENT‘ } 5 }
7.reducers里面的index.jsx文件代码如下
import {combineReducers} from "redux" import counter from ‘./counter‘ export default combineReducers({ counter, })
8.reducers里面的counter.jsx代码如下
const initialState = { num:0 } //state export default (state = initialState,action) => { switch (action.type){ case ‘INCREMENT‘: return { ...state, num:state.num+1 } default: return state } }
9.最后我们的主页代码
import React, { Component } from ‘react‘ import { connect } from ‘react-redux‘ import { counterCreator } from ‘../actions‘ class Home extends Component { constructor(props){ super(props) this.state = { } } btn = () => { this.props.increment() } render() { return ( <div> {this.props.$$counter} <button onClick={this.btn}>触发</button> </div> ) } } const mapStateToProps = (state) => { return { $$counter: state.counter.num } } const mapDispatchToProps = (dispatch) => ({ increment: () => dispatch(counterCreator.increment()) }) export default connect( mapStateToProps, mapDispatchToProps )(Home)