Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should Actions in Redux always be unique?

Tags:

redux

In this example I'm using an action named ADD_TODO

import { createStore, combineReducers } from 'redux';

function todos(state, action) {
    state = state || [];
    switch (action.type) {
        case 'ADD_TODO':
            return state.concat([ action.text ]);
        default:
            return state;
    }
}

function counter(state, action){
    state = state || 0;
    switch (action.type){
        case 'INCREMENT':
            return state+1;
        case 'DECREMENT':
            return state-1;
        case 'ADD_TODO':
            return state+100;
        default:
            return state;
    }
}

var app = combineReducers({
    todos: todos,
    counter: counter
});

var store = createStore(app);
store.dispatch({ type: 'ADD_TODO': text: 'buy eggs' });

This cause both the "todos" and "counter" reducers to trigger. Should I make all reducers have unique actions unless I actually intended it?

How can we implement this with multiple reducers that almost do the same thing? Multiple counters for example can have "INCREMENT" and a "DECREMENT" actions.

Should name spacing actions solve it?

eg: "POINT_INCREMENT", "POINT_DECREMENT".

like image 949
vbreak Avatar asked Dec 25 '15 04:12

vbreak


People also ask

How are actions defined in Redux?

Actions are the only source of information for the store as per Redux official documentation. It carries a payload of information from your application to store. As discussed earlier, actions are plain JavaScript object that must have a type attribute to indicate the type of action performed.

What are the mandatory attributes of Redux action?

Reducers must always follow some specific rules: They should only calculate the new state value based on the state and action arguments. They are not allowed to modify the existing state . Instead, they must make immutable updates, by copying the existing state and making changes to the copied values.

Is it mandatory to use action type in Redux?

Action type constants are common in legacy redux apps, but aren't strictly required.

Which of the following things should not be performed inside the reducer?

Following are the things you should never do inside a reducer: Mutate reducer's arguments; Perform side effects like database calls, API calls, and routing transitions; Call non-pure functions, e.g., Date.


1 Answers

There's nothing inherently wrong with having different reducers respond to the same action -- for example, if you refresh the entire state at once. But yeah, if you have two counters that correspond to different things, you probably want to come up with a naming scheme to differentiate. But I would think the action names probably should have some noun to indicate what they apply to.

like image 168
acjay Avatar answered Oct 25 '22 01:10

acjay



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!