-
Notifications
You must be signed in to change notification settings - Fork 46
Freactal doesn't work well with recursive state provider components. #104
Comments
can you fiddle this? |
Is there a base fiddle somewhere? ideally with react. A more descriptive title should probably indicate recursive so I'll update that. The pattern that I had a failure with here is: (leaving out the code to actually figure out who the children are)
I originally wanted to use freactal to manage the state here: https://github.com/notabugio/notabug/blob/master/src/components/notabug/Listing.js But was unable to as Listing's are nested inside of each other for comment trees. |
Why would initial state have arguments?
…Sent from my iPhone
On May 18, 2018, at 1:43 PM, go1dfish ***@***.***> wrote:
Is there a base fiddle somewhere? ideally with react. A more descriptive title should probably indicate recursive so I'll update that.
The pattern that I had a failure with here is: (leaving out the code to actually figure out who the children are)
const personProvider = provideState({
initialState: ({ id }) => ({ personId: id }),
/// effects to fetch children etc here
computed: { personsChildren }
});
const Person = personProvider(injectState(({ state: { name, personsChildren } }) => (
<li>
{name}
<ul>{personsChildren.forEach(id => <Person person={id} />)}</ul>
</li>
))));
I originally wanted to use freactal to manage the state here:
https://github.com/notabugio/notabug/blob/master/src/components/notabug/Listing.js
But was unable to as Listing's are nested inside of each other for comment trees.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
also in general - complex/nested things are pretty messy in many scenarios. I'd recommend flattening out your tree into an array of objects with id's and parent_ids as static values, and assemble them within a view context. You may find this a more manageable store than a deep nested object. |
Regardless of the data structure sometimes a component will contain another instance of itself and need to manage state, The first argument to initialState is props passed into the wrapped component. |
@go1dfish It's a bug, I fixed this in our fork: textpress@4db4e42 Note that it's triggered by the presence of computed properties (might be useful for working around this if you don't want to mess with forking). |
I’ve found computed properties buggy; fortunately they’re easy to externalize with helper functions that take in state as a parameter
…Sent from my iPhone
On Jun 8, 2018, at 8:40 PM, Aleksey Gurtovoy ***@***.***> wrote:
@go1dfish It's a bug, I fixed this in our fork: ***@***.***
Note that it's triggered by the presence of computed properties (might be useful for working around this if you don't want to mess with forking).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
@agurtovoy good to know, any reason you haven't submitted your branch as a PR? |
@go1dfish Lack of time at the moment, basically. Our fork has more changes, some of which are experimental. I should have made a fix for this in a standalone branch, but was in a time crunch. Also, my earlier PR is still waiting to be merged ;) |
@agurtovoy, if you don't have time for a PR, I may go spelunking through your fork and cherry-pick the fixes you've introduced. Interested in some of your experiments, as well. |
Also, sorry again for going incommunicado on |
@divmain Please feel free to cherry-pick the fixes. You might want to fix this one differently, too; I went for the No worries about the delay, and thanks for open sourcing this in the first place! |
@divmain I finally have some time to devote to this; what's freactal's browser support policy? Should I just create a pull request with my original fix (with the |
Consider a rendering of nested comments.
Say you build up a state provider "withReplies" that takes an id prop and fetches replies to put in the state.
This withReplies approach works great, until you attempt to nest these components, as a error is thrown
Is there a way I can nest fractal state providers such that the inner most states replace the outer most states in their scope?
The text was updated successfully, but these errors were encountered: