fix(framework): reliably re-render lists of DOM nodes #1519
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.
In the
lit-html
repeat
directive, the key function is defined as follows:export type KeyFn<T> = (item: T, index: number) => unknown;
It takes 2 arguments:
item
andindex
and the usage is as follows:newKeys[index] = keyFn ? keyFn(item, index) : index;
We pass
undefined
to ourrepeat
inlitVisitor
class. Thereforelit-html
takes theindex
as key.The purpose of this change is to pass the
_id
, which is unique to every UI5 Web Component, and theindex
as fallback, so that the algorithm works as before when there are no_id
s (f.e. when we don't iterate on arrays of UI5 Web Components).This will optimize the rerendering of lists of UI5 Web Comopnents and also prevent some bugs, such as the filtering of items in
ui5-multi-combobox
.fixes: #1487