zoukankan      html  css  js  c++  java
  • React Redux 记数器

    npm init react-app counter
    cd counter
    npm install
    

    src/index.js改为

    import React from 'react';
    import { createStore } from 'redux'
    import { connect, Provider } from 'react-redux'
    import ReactDOM from 'react-dom';
    // action creator
    const CountAction= {
        increment : {type: 'INCREMENT'},
        decrement : {type: 'DECREMENT'}
    }
    // reducer
    function counter(state = 0, action) {
      switch (action.type) {
        case CountAction.increment.type:
          return state + 1
        case CountAction.decrement.type:
          return state - 1
        default:
          return state
      }
    }
    let store = createStore(counter)
    
    // presentational component
    const counterCreator = ({ number, onClick }) => 
       (
          <div>
            <div>{number}</div>
              <button onClick={() =>{onClick('increment')}}>
                Increase
              </button>
              <button onClick={() =>{onClick('decrement')}}>
                Decrease
              </button>
          </div>
        )
    
    const mapStateToProps = state => {
        return {
            number: state
        }
    }
    const mapDispatchToProps = (dispatch) => { 
        return {
            onClick: clickType => {
                dispatch(CountAction[clickType])
            }
        }
    }
    // container
    const Counter = connect(mapStateToProps, mapDispatchToProps)(counterCreator)
    
    ReactDOM.render(
        <Provider store={store}>
            <Counter />
        </Provider>,
        document.getElementById('root')
    )
    

    运行 npm start 效果如下:

  • 相关阅读:
    MySQL数据库之数据类型
    MySQL数据库之数据操作
    MySQL数据库之表的操作
    十、原子操作
    九、std::async异步线程
    八、条件变量
    cisco笔试记录
    七、单例设计模式
    基于HTTP的功能追加协议
    使用栈来计算后缀表达式
  • 原文地址:https://www.cnblogs.com/zhaofeng-shu33/p/10353010.html
Copyright © 2011-2022 走看看