redux计时器案例

import React, { Component } from 'react'
import PropTypes from 'prop-types'
import ReactDOM from 'react-dom'
import { createStore } from 'redux'
import { Provider, connect } from 'react-redux'
import {Button} from 'antd';

// Map Redux state to component props
function mapStateToProps(system) {
  return {
    value: system.count
  }
}
// Map Redux actions to component props
function mapDispatchToProps(dispatch) {
  return {
    onIncreaseClick: () => dispatch(increaseAction),
    onStopClick:()=>dispatch(onStopAction)
  }
}

class Reduxs extends Component {
    static get propTypes() {
        return {
            system: PropTypes.object,
        };
    }
     // 初始化页面
    constructor(props, context) {
        super(props)
        this.state={
            isdisabel:false
        }
    }
    render() {
        const { value, onIncreaseClick,onStopClick } = this.props
        const isdisabel=value===0?true:false;
        return (
        <div style={{width:"200px",margin:"50px auto 0px auto"}}>
            <p className="mb20">{value}</p>
            <Button onClick={onIncreaseClick} className="mr20">计数</Button>
            <Button onClick={onStopClick} disabled={isdisabel}>停止计数</Button>
        </div>
        )
    }
}


// Action
const increaseAction = { type: 'increase' }
const onStopAction={type: 'stopincrease'}
// Reducer
function counter(state = { count: 0 }, action) {
  const count = state.count
  switch (action.type) {
    case 'increase':
      return { count: count + 1 }
    case 'stopincrease'  :
     return {count:0}
    default:
      return state
  }
}

// Store
const store = createStore(counter)





// Connected Component
const App = connect(
  mapStateToProps,
  mapDispatchToProps
)(Reduxs)

export default class Redux  extends React.Component {
    render(){
        return (
            <Provider store={store}>
               <App />
            </Provider>
        )
    }
}

 

posted @ 2017-11-03 19:19  webnote  阅读(143)  评论(0编辑  收藏  举报