implement a generic solution for setting a react key on a component from outside the component. #59
+16
−4
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.
This has the advantage that neither every component that may be part of a sequence has to
implement a :keyfn function nor does the component have to know that fact and how to generate
a key which will not be needed by the component for any other purpose.
To keep the current API and since the key actually IS metadata this is accomplished
by setting metadata on the component's value at call time using the with-key
function, e.g. (MyComponent (with-key value key) ...), which will override :keyfn.
The only restriction for this to work is that the component's value has to be a datatype
which may carry metadata (implements the IWithMeta interface) like vectors, hashmaps, etc...