Skip to main content

Action simplification

As discussed, all your actions are classes that extend the abstract base class ReduxAction<AppState>.

If you want to simplify your actions, you can create another "base action" in your own code, called simply Action or AppAction that already contains the generic type AppState:

abstract class AppAction extends ReduxAction<AppState> { } 

Then, all your actions can extend this AppAction class, instead of ReduxAction<AppState>.

Instead of:

class IncrementAction extends ReduxAction<AppState> {

AppState? reduce() {
...
}
}

You can write:

class IncrementAction extends AppAction {

AppState? reduce() {
...
}
}

Note: Creating your own base AppAction class is also nice because we can then add some extra functionality to it, which as a result becomes available to all your actions, as we will see later on.

Important

From now on in this documentation, I will extend AppAction instead of ReduxAction<AppState>, assuming you have created this AppAction class in your code.

Naming conventions

I personally like to suffix my actions with Action, so I can easily identify them in my code. However, that's just my convention, and you can name your actions as you prefer. For example, you could name them Increment, GetAmount etc.:

class Increment extends AppAction {

AppState? reduce() {
...
}
}

And later:

dispatch(Increment());

Next, let's see how to dispatch actions.