klarna / electron-redux

Use redux in the main and browser processes in electron
MIT License
743 stars 94 forks source link

Using Redux Observable to handle async leads to actions being fired twice #67

Open walleXD opened 6 years ago

walleXD commented 6 years ago

Hey,

I was trying to use redux-observable but the synchronous action which is fired by the async action gets fired twice.

For example, once I run increment_async action, which fires the increment action after 1000ms, the increment action is being fire twice. This only happens after setting up electron-redux

Any idea why that would be happening?

Thanks a bunch 🙏🏼

hardchor commented 6 years ago

Hey @walleXD

That's probably happening because your async action fires both on the renderer and the main thread. Have you tried aliased actions ?

walleXD commented 6 years ago

I am just firing the actions in the renderer. Should I scope them with local to avoid being run twice?

Aliased actions allow us to fire the action in the main thread but this happens in the renderer but I didn’t try to use aliased action On the main thread with redux-observable. Will report back in my findings.

hardchor commented 6 years ago

Yeah, so depending on what you're doing, your option is to either use the local option and prevent the action from being forwarded to the main thread's store, or use an aliased action to only trigger the action in the main store (which is the preferred way for actions that produce side-effects, e.g. AJAX requests etc.).