Возраст игрока не редактируется - PullRequest
1 голос
/ 26 апреля 2020

Итак, в моей программе я статически создаю и удаляю игроков. Однако редактирование атрибута игрока не работает.

У меня есть 3 типа действий. ADD_PLAYER, REMOVE_PLAYER, EDIT_PLAYER

Для каждого из них я создаю генератор действий, который содержит тип и любые другие параметры соответственно. Вот мой полный код

import { createStore, combineReducers } from 'redux'; 
import uuid from 'uuid';


// ADD_PLAYER
const addPlayer = (
    {
        firstName = '',
        lastName = '',
        age = 0,
        position = ''
    } = {}) => ({
    type: 'ADD_PLAYER',
    player: {
        id: uuid(),
        firstName,
        lastName,
        age,
        position
    }
});

// REMOVE_PLAYER
const removePlayer = ( {id} = {} ) => ({
        type: 'REMOVE_PLAYER',
        id
});

// EDIT_PLAYER
const editPlayer = (id, updates) => ({
    type: 'EDIT_PLAYER',
    id,
    updates
})

const playersReduxDefaultState = [];

// The Player reducer
const playersReducer = (state = playersReduxDefaultState, action) => {
    switch(action.type) {
        case 'ADD_PLAYER':
            return [
                ...state,
                action.player
            ]

        case 'REMOVE_PLAYER': 
            return state.filter(({id}) => id !== action.id)

        case 'EDIT_PLAYER': 
            return state.map((player) => {
                if(player.id === action.id) {
                    return {
                        ...player,
                        ...action.updates
                    }
                } else {
                    return player
                }
            });  
        default: 
            return state;
    }
};

const store = createStore(
    combineReducers({
        players: playersReducer
    })
)

store.subscribe(() => {
    console.log(store.getState())
});

store.dispatch(
    addPlayer(
        {   
            firstName: 'Theo',
            lastName: 'Tziomakas',
            age: 38,
            position: 'Striker'
        }
))

const playerOne = store.dispatch(
    addPlayer(
        {   
            firstName: 'Vasilis',
            lastName: 'Tziastoudis',
            age: 38,
            position: 'Defender'
        }
))

store.dispatch(removePlayer({ id: playerOne.player.id}));

// Edit player's one age. 
store.dispatch(editPlayer(playerOne.player.id, { age: 29 }));

Что мне не хватает?

Спасибо, Тео.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...