加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

React Redux 记数器

发布时间:2020-12-15 20:35:01 所属栏目:百科 来源:网络整理
导读:npm init react-app countercd counternpm install 将 src/index.js 改为 import React from ‘react‘;import { createStore } from ‘redux‘import { connect,Provider } from ‘react-redux‘import ReactDOM from ‘react-dom‘;// action creatorconst
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 效果如下:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读