實操《深入淺出React和Redux》第四期–react-redux
進入到第四期,
程式碼大大簡化,
但如果沒有前面的演化過程,
一定讓人蒙圈~~
三個主要檔案:
index.js
import React from `react`;
import ReactDOM from `react-dom`;
import {Provider} from `react-redux`;
import `./index.css`;
import ControlPanel from `./views/ControlPanel`;
import store from `./Store`;
import registerServiceWorker from `./registerServiceWorker`;
ReactDOM.render(
<Provider store={store}>
<ControlPanel />
</Provider>, document.getElementById(`root`));
registerServiceWorker();
Counter.js
import React, { Component } from `react`;
import PropTypes from `prop-types`;
import {connect} from `react-redux`;
import * as Actions from `../Actions.js`;
const buttonStyle = {
margin: `10px`
};
const propTypes = {
caption: PropTypes.string.isRequired
};
function Counter({caption, onIncrement, onDecrement, value}){
return (
<div>
<button style={buttonStyle} onClick={onIncrement}>+</button>
<button style={buttonStyle} onClick={onDecrement}>-</button>
<span> { caption } count: {value}</span>
</div>
);
}
Counter.propTypes = {
caption: PropTypes.string.isRequired,
onIncrement: PropTypes.func.isRequired,
onDecrement: PropTypes.func.isRequired,
value: PropTypes.number.isRequired
};
function mapStateToProps(state, ownProps) {
return {
value: state[ownProps.caption]
}
}
function mapDispatchToProps(dispatch, ownProps) {
return {
onIncrement: () => {
dispatch(Actions.increment(ownProps.caption));
},
onDecrement: () => {
dispatch(Actions.decrement(ownProps.caption));
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Counter);
Summary.js
import React, {Component} from `react`;
import PropTypes from `prop-types`;
import {connect} from `react-redux`;
function Summary ({value}) {
return (
<div>Total Count: {value}</div>
);
}
Summary.propTypes = {
value: PropTypes.number.isRequired
};
function mapStateToProps(state){
let sum = 0;
for (const key in state) {
if (state.hasOwnProperty(key)) {
sum += state[key];
}
}
return {value: sum};
}
export default connect(mapStateToProps)(Summary);
相關文章
- 深入淺出React和ReduxReactRedux
- React 入門-redux 和 react-reduxReactRedux
- react-redux的淺比較ReactRedux
- react-reduxReactRedux
- react-redux(二)ReactRedux
- react-redux實踐總結ReactRedux
- redux 和 react-redux 部分原始碼閱讀ReduxReact原始碼
- 深入理解redux之從redux原始碼到react-redux的原理Redux原始碼React
- 對React、Redux、React-Redux詳細剖析ReactRedux
- redux && react-redux原始碼解析ReduxReact原始碼
- 前端筆記之React(五)Redux深入淺出前端筆記ReactRedux
- react-redux 的使用ReactRedux
- React-redux基礎ReactRedux
- react-redux 進階ReactRedux
- react-native 之 state 和 props 以及 redux 和 react-reduxReactRedux
- react、redux、react-redux之間的關係ReactRedux
- react-redux的Provider和connectReactReduxIDE
- 【React系列】動手實現一個react-reduxReactRedux
- 深入淺出理解ReduxRedux
- react-redux的基本用法ReactRedux
- React-Redux簡單使用ReactRedux
- react-redux原始碼解析ReactRedux原始碼
- React-Redux原始碼分析ReactRedux原始碼
- React 快速上手 - 08 redux 狀態管理 react-reduxReactRedux
- 使用react-hook 替代 react-reduxReactHookRedux
- react-redux/redux相關API,用法原理ReactReduxAPI
- 帶你瞭解redux與react-reduxReduxReact
- 深入理解redux原理,從零開始實現一個簡單的redux(包括react-redux, redux-thunk)ReduxReact
- React,Redux,React-redux的錯綜複雜關係ReactRedux
- 深入淺出redux學習Redux
- react-redux學習筆記ReactRedux筆記
- 使用react-hook 重寫 react-reduxReactHookRedux
- Redux 入門教程(3):React-Redux 的用法ReduxReact
- Redux 入門教程(三):React-Redux 的用法ReduxReact
- 用react-redux實現react元件之間資料共享ReactRedux元件
- react-redux原始碼分析及實現原型(上)ReactRedux原始碼原型
- react-redux原始碼分析及實現原型(下)ReactRedux原始碼原型
- 深入淺出redux-middlewareRedux