Comments (7)
If I create an extra logic and move the second dispatch
there, it works like a charm.
So I guess I am right in concluding that you can only invoke dispatch
once in each logic.
Do you think this limitation is necessary? Do you think it's a big disadvantage for this library?
from redux-logic.
I tried done
, it doesn't work:
process ({ getState, action }, dispatch, done) {
const id = nextNotificationId++
dispatch(showNotification(id, action.text))
setTimeout(() => {
dispatch(hideNotification(action.id))
done()
}, 5000)
}
from redux-logic.
I also tried
processOptions: {
dispatchMultiple: true // turn on multiple dispatch mode
}
It doesn't work either.
from redux-logic.
It is trivial with RxJS:
But this project's goal is:
"I wrote the rxjs code so you won't have to."
I hope this issue could help you to find a balance between abstraction and flexibility.
from redux-logic.
@tylerlong Thanks for creating the issue.
I've put together a jsfiddle that shows how you might do this with redux-logic.
You would use the dispatch and done to perform multiple dispatch, otherwise it assumes a single dispatch. I'm not sure why it didn't work for you when you tried this, but you might compare your own code against the jsfiddle or the snippet below.
let nextNotificationId = 0
const showNotificationWithTimeoutLogic = createLogic({
type: 'SHOW_NOTIFICATION_WITH_TIMEOUT',
process ({ getState, action }, dispatch, done) { // include done for multidispatch
const id = nextNotificationId++
dispatch(showNotification(id, action.text))
setTimeout(() => {
dispatch(hideNotification(id))
done();
}, 5000)
}
});
You could also return an observable if you would prefer to use them. I want people to be able to use whatever they are comfortable with. (callbacks, promises, observables, async/await).
let nextNotificationId = 0
const showNotificationWithTimeoutLogic = createLogic({
type: 'SHOW_NOTIFICATION_WITH_TIMEOUT',
process ({ getState, action }) { // can just return an observable too
const id = nextNotificationId++
return Observable.merge(
Observable.of(showNotification(id, action.text)),
Observable.of(hideNotification(id)).delay(5000)
);
}
});
It is a challenge to find the right abstractions for people. I'm always looking to improve them, so I do appreciate advice and suggestions.
from redux-logic.
I tried again and it did work! I remember that I tried everything possible. Maybe I made some mistake or I forgot to compile the code or clear the cache. I've no idea what was wrong but now it works like a charm!
Here is the sample project I created: https://github.com/tylerlong/hello-async/tree/master/redux-logic Feel free to send me PR if you want to change anything there.
Feel free to close this issue and thank you for the help!
from redux-logic.
Fantastic. I'm glad it worked this time.
I like your project hello-async
. It is really good to be able to see different ways to accomplish things side by side.
I'm going to check it out more thoroughly when I have time, but it looks like a great idea.
from redux-logic.
Related Issues (20)
- hook for optimistic ui updates
- failType not triggered for rejected promise HOT 3
- Error in StandardAction generic type definition ? HOT 7
- Type error when specifying payload type HOT 2
- Why is CreateLogic.Config.Transform.Hook uses optional argument for reject? HOT 2
- How to delay a dispatch HOT 2
- done cb in finally does not trigger dispatch HOT 2
- Can not make 'latest' property work HOT 2
- processReturn plus processMultiple
- Feature request: `logicMiddleWare.removeLogic(logics)` HOT 2
- can't test Timers and/or cancelType HOT 1
- Is this repo archived, can't see any active development HOT 2
- Type Error while trying to dispatch an Observable
- Improve bundle size by dropping RxJS and improving build process?
- example of post using ajax HOT 4
- `NODE_ENV` is always '' (empty string) in browser. HOT 1
- createLogic type can be string array
- Websockets redux-logic and SSR
- redux-logic v4.0.0 is not in npmjs.com HOT 1
- action (with type) in `catchError` returned observable is not dispatched HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from redux-logic.