The component dispatches an action, which is processed in the store. This often involves deciding what should handle the action and how it should be transformed. This is done by the effects classes. Then we execute the needed side effects. Next, the reducers create a new state object. And, finally, the component displays the updated state. This is, in a nutshell, how NgRx works.
Programming with NgRx is programming with messages. In NgRx they are called actions. To start an interaction a component or a service creates an action, populates it with data, and then dispatches it. The component does not mutate any state in place.