redux-项目中使用案例(二)

  1. index.js
import React from "react";
import ReactDOM from "react-dom";
import thunk from "redux-thunk";
import {Provider} from "react-redux";
import App from "./App";
import { createStore,applyMiddleware,compose } from "redux";
import { counter} from "./index-redux";
const reduxDevtools=window.devToolsExtension?window.devToolsExtension():(f=>f);//用于redux-tools监听

const store = createStore(counter,compose(
  applyMiddleware(thunk),reduxDevtools
  ));
  ReactDOM.render(
    <Provider store={store}>
    <App />
    </Provider>,
    document.getElementById("root")
  );


  1. App.js
import React from 'react'
import { connect } from 'react-redux'
import { add, minus, delayAdd} from './index-redux'
class App extends React.Component{
  render(){
    const {add,minus,delayAdd}=this.props;//集成与connect下的方法
    return (
      <div>
        <h2>数值:{this.props.num}</h2>
        <button onClick={add}>增加</button>
        <button onClick={removeGun}>减少</button>
        <button onClick={addGunAsync}>延迟增加</button>
      </div>
    ) 
  }
}
App=connect( {num:state},{ add, minus,  delayAdd})(App)
export default App;

  1. index-redux
// 这就是reducer处理函数,参数是状态和新的action
export function counter(state=0, action) {
  // let state = state||0
  switch (action.type) {
    case "add":
      return state + 1
    case "minus":
      return state - 1
    default:
      return 10
  }
}
export function addGun(){
  return { type: "add" }
}
export function removeGun(){
  return { type: "minus" }
}
// 延迟添加,拖两天再给
export function delayAdd(){
  // thunk插件的作用,这里可以返回函数,
  return dispatch => {
    setTimeout(() => {
      // 异步结束后,手动执行dispatch
      dispatch(addGun());
    }, 2000);
  };

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。