-
Notifications
You must be signed in to change notification settings - Fork 403
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
for:each
within for:each
without explicit key
can lead to vdom errors
#4889
Comments
This issue has been linked to a new work item: W-17266520 |
Potential fix: we could use a |
Interestingly, my attempt to use a The issue here seems to be that we land in this code path but the lwc/packages/@lwc/engine-core/src/framework/rendering.ts Lines 393 to 395 in 5d1837b
|
* test(ssr): add tests for nested elements in slots (#5048) * fix(compiler): log warning for missing name/namespace (#4825) * test(karma): remove unnecessary IE11-related code (#5054) * fix: replace barrel exports from `lwc` with `@lwc/ssr-runtime` (#5034) * fix: replace barrel from `lwc` package with '@lwc/ssr-runtime' * fix: handle * barrel case and corresponding tests * fix: function naming * fix: barrel import test parity * fix: include optional exported alias for export all declaration replacement, tests * chore: explain function name massaging in test * fix: deep clone objects and optimize tests * fix: remove unused shared file * test(karma): add test for for:each issue #4889 (#5053) * fix(ssr): missing bookends for slotted lwc:if not at the top-level (#5027) Co-authored-by: Nolan Lawson <[email protected]> * fix(ssr): fix HTML comment bookends for if blocks (#5055) Co-authored-by: Will Harney <[email protected]> * fix(ssr-compiler): namespace and name should be optional in ComponentTransformOptions (#5058) * test(ssr): test `if` with adjacent text (#5056) * test(karma): reduce #4889 even further (#5060) * fix(ssr): fix `style` attribute rendering (#5061) * fix(ssr-compiler): harmonize some wire errors (#5062) Co-authored-by: Will Harney <[email protected]> * fix: only call callback when needed @W-17420330 (#5064) * fix: only call callback when needed @W-17420330 * chore: simplify test * fix: use correct class check * fix(ssr): render from superclass (#5063) Co-authored-by: Nolan Lawson <[email protected]> * test(ssr): add more superclass tests (#5065) * fix: use correct shadow root @W-17441501 (#5070) * fix: use correct shadow root @W-17441501 * chore: yagni i guess * chore: 🛩️📦 * If you read this, tell me so! * fix(ssr): align csr and ssr reflective behavior (#5050) * chore: release v8.12.2 @W-17485572 (#5075) --------- Co-authored-by: Nolan Lawson <[email protected]> Co-authored-by: jhefferman-sfdc <[email protected]> Co-authored-by: Matheus Cardoso <[email protected]> Co-authored-by: Nolan Lawson <[email protected]> Co-authored-by: Eugene Kashida <[email protected]>
(Salesforce Known Issue)
If you have an iteration (
for:each
) within another iteration:... and if you have a sufficient number of
lwc:if
layers and duplicatedkey
s between the grandchildren and the children, then you can get a runtime error:Thrown by:
lwc/packages/@lwc/engine-core/src/framework/modules/props.ts
Line 62 in 666e8fe
Or:
Thrown by:
lwc/packages/@lwc/engine-dom/src/apis/create-element.ts
Line 76 in 666e8fe
One workaround is to put a
key
around the inner loop:Another workaround is to flatten the array. E.g.:
... and then use a single
for:each
:Repro for first error: nolanlawson/lwc-barebone@836362a
Repro for second error: nolanlawson/lwc-barebone@a97223c
Repro steps:
pnpm i && pnpm run dev
The text was updated successfully, but these errors were encountered: