From 5be2d4029ef67252a3a1af75f26f7d284d90f005 Mon Sep 17 00:00:00 2001
From: liuqingheng <1303696791@qq.com>
Date: Tue, 17 Mar 2020 11:22:50 +0800
Subject: [PATCH] liuqingheng test
---
src/components/PlayerList.js | 62 +++++++++++++++++++++++++++---------
src/constants/ActionTypes.js | 3 ++
src/reducers/playerlist.js | 23 +++++++++++--
3 files changed, 71 insertions(+), 17 deletions(-)
diff --git a/src/components/PlayerList.js b/src/components/PlayerList.js
index 7b40246..6739c5e 100755
--- a/src/components/PlayerList.js
+++ b/src/components/PlayerList.js
@@ -6,21 +6,39 @@ import PlayerListItem from './PlayerListItem';
class PlayerList extends Component {
render() {
return (
-
- {this.props.players.map((player, index) => {
- return (
-
- );
- })}
-
+
+
this.props.toggleSFPG()}/>
+
+ {this.props.players.map((player, index) => {
+ return (
+
+ );
+ })}
+
+
+ {
+ this.props.players.length > 5 &&
+
+
+ {this.props.currentPage}
+
+
+ }
+
+
+
);
}
}
@@ -30,4 +48,18 @@ PlayerList.propTypes = {
actions: PropTypes.object.isRequired,
};
+const mapStateToProps = state => ({
+ players: state.players.playersById.filter((item, index) => {
+ let start = (state.currentPage - 1) * 5;
+ let end = start + 4;
+ let onlySFPG = state.onlySFPG;
+ if(!onlySFPG) {
+ return (index >= start && index <= end);
+ } else {
+ let isSFPG = item.position === 'SF' || item.position === 'PG';
+ return (index >= start && index <= end && isSFPG);
+ }
+ })
+});
+
export default PlayerList;
diff --git a/src/constants/ActionTypes.js b/src/constants/ActionTypes.js
index b796fae..7d4b362 100755
--- a/src/constants/ActionTypes.js
+++ b/src/constants/ActionTypes.js
@@ -1,3 +1,6 @@
export const ADD_PLAYER = 'ADD_PLAYER';
export const STAR_PLAYER = 'STAR_PLAYER';
export const DELETE_PLAYER = 'DELETE_PLAYER';
+export const PRE_PAGE = 'PRE_PAGE';
+export const NEXT_PAGE = 'NEXT_PAGE';
+export const TOGGLE_SF_PG = 'TOGGLE_SF_PG';
diff --git a/src/reducers/playerlist.js b/src/reducers/playerlist.js
index 1bc7457..68d8397 100755
--- a/src/reducers/playerlist.js
+++ b/src/reducers/playerlist.js
@@ -1,6 +1,8 @@
-import * as types from '../constants/ActionTypes';
+import * as types from '../constants/ActionTypes';
const initialState = {
+ currentPage: 1,
+ onlySF_PG: false,
playersById: [
{
name: 'LeBron James',
@@ -70,7 +72,24 @@ export default function players(state = initialState, action) {
...state,
playersById: players,
};
-
+ case types.NEXT_PAGE:
+ let pages = Math.ceil(state.playersById.length / 5);
+ let current = state.currentPage;
+ return {
+ ...state,
+ currentPage: current === pages ? current : current + 1
+ };
+ case types.PRE_PAGE:
+ let current = state.currentPage;
+ return {
+ ...state,
+ currentPage: current === 1 ? 1 : current - 1
+ };
+ case types.TOGGLE_SF_PG:
+ return {
+ ...state,
+ onlySF_PG: !state.onlySF_PG
+ }
default:
return state;
}