Update how children are rendered to prevent state loss #102
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The issue
children = (() => React.Children.toArray(this.props.children))();
The use of an anonymous function here for rendering the children effectively creates new components on every rerender of the parent. This creates an issue for example when you have a
TextInput
in one of the children with a hoisted state, for every character you write new components are created and all state is lost.The Fix
This fix just takes the
children
from the props and renders it, which fixes this issue.My temporary workaround
The workaround I am using at the moment is a somewhat not-so-pretty monkey patch:
Where
children
is a variable holding the children I render inside theSwiper
.