-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API to add custom actions to state nodes #91
Comments
From @EmrysMyrddin (unirakun/k-ramel#60) An other idea for the generation of action creators is to give a list of action name and generate an action type based on the path in a mobx-state-tree fashion const store = createStore({
data: {
nested: simpleObject({
actions: [ 'load', 'loaded' ]
}),
},
}
store.data.nested.loaded({ hello: 'world' })
// Dispatch {type: 'data/nested/loaded', payload: { hello: 'world' } } But I'm not entirely convince... It's difficult then to extend the list of actions to add a custom action creator function. A solution can be to have both API. If |
Why define actions ? What do you think about : const store = createStore({
data: {
nested: simpleObject(),
},
}
store.data.nested.dispatch('load')
// Dispatch { type: 'data/nested/load' }
store.data.nested.dispatch('loaded')({ hello: 'world' })
// Dispatch { type: 'data/nested/loaded', payload: { hello: 'world' } }
// OR - if payload it's not a rule on krf
store.data.nested.dispatch('loaded')({ hello: 'world' })
// Dispatch { type: 'data/nested/loaded', hello: 'world' } |
He want to define actions so he can uses its like constants. Out of topic for @guillaumecrespel, how can you make them both works: store.data.nested.dispatch('load')
// Dispatch { type: 'data/nested/load' }
store.data.nested.dispatch('loaded')({ hello: 'world' })
// Dispatch { type: 'data/nested/loaded', payload: { hello: 'world' } } |
@EmrysMyrddin is it something you still need after using the library more often ? |
Yes, I did had the time toake a PR but I have began to make some utility functions on ICES project that implements my first API proposition. For now, it works pretty well, the only drawback is that our actions are currently defined in a separate file from my model. So yes it could be great to integrate it directly in the model declaration. |
Do you want to open a PR or may I think of an implementation myself ? |
I think I can make the PR. While using it, I had some ideas to improve our
first draft of the API.
Le lun. 11 juin 2018 à 08:42, Fabien JUIF <[email protected]> a
écrit :
… Do you want to open a PR or may I think of an implementation myself ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#91 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADrU8mowguqjglMmyQumeYCjDhaXPQgSks5t7hFugaJpZM4SBU5w>
.
|
Should we wait this issue for the 6.0.0 ? The questions behind that are:
|
ping @EmrysMyrddin |
I don't currently have the time to do the PR. But I don't think i will break existing API. I will just add things. |
From @EmrysMyrddin (unirakun/k-ramel#60)
It could be useful to allow users to define their own custom actions along with the ones already generated by k-redux-factory.
The actions could be then decorated with dispatch function, allowing the user to easily call it from the store
Since we want to push the use of the redux-saga like API, we want to be able to dispatch very simple action like simple events. For this, our library can also help the user by generating actions for him. You just give a type name for your action and it generate the action creator for you. The action creators can take an optional payload that will be aded to the action.
I'm not entirely sure of the API. In particular, I'm not convinced by the
store.data.load.type
to get the type name of the action. Perhaps by adding atoString
implementation to the function ? Allowing to just dowhen(store.data.loaded, (...) => ...)
?The text was updated successfully, but these errors were encountered: