DEV Community

JaredHarbison
JaredHarbison

Posted on

3

DRAGnet Reducer

Rails + React + Redux - Pt 11


The queens_reducer.js was the first reducer I wrote for DRAGnet. It was a natural choice as the simplest.


Let's get started!


For UPDATE_QUEEN I defined idx as the id for the queen being updated by the user. In the case of UPDATE_QUEEN, the return is the data for the updated queen spliced from the complete array of drag_queens.

import { LOADING_QUEENS, FETCH_QUEENS, UPDATE_QUEEN } from '../actions/types';
import {initialState} from './initialState';
export default function queens_reducer(state = initialState, action) {
console.log(action)
let idx
let tidx
switch (action.type) {
case LOADING_QUEENS:
return Object.assign({}, state, { loading: true })
case FETCH_QUEENS:
return { loading: false, drag_queens: action.payload }
case UPDATE_QUEEN:
idx = state.drag_queens.indexOf(state.drag_queens.find(q => q.id == action.payload.queen_id))
return {...state,
drag_queens: [...state.drag_queens.slice(0, idx),
{...state.drag_queens[idx]},
...state.drag_queens.slice(idx)]
}
default:
return state
}
}

That's all folks!

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more