File tree Expand file tree Collapse file tree 4 files changed +35
-5
lines changed Expand file tree Collapse file tree 4 files changed +35
-5
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ ' @qwik.dev/core ' : patch
3
+ ---
4
+
5
+ fix: handle falsy value for dangerouslySetInnerHTML
Original file line number Diff line number Diff line change @@ -655,8 +655,10 @@ export const vnode_diff = (
655
655
}
656
656
657
657
if ( key === dangerouslySetInnerHTML ) {
658
- element . innerHTML = value as string ;
659
- element . setAttribute ( QContainerAttr , QContainerValue . HTML ) ;
658
+ if ( value ) {
659
+ element . innerHTML = String ( value ) ;
660
+ element . setAttribute ( QContainerAttr , QContainerValue . HTML ) ;
661
+ }
660
662
continue ;
661
663
}
662
664
Original file line number Diff line number Diff line change @@ -641,6 +641,27 @@ describe.each([
641
641
) ;
642
642
} ) ;
643
643
644
+ it ( 'should handle falsy values in dangerouslySetInnerHTML' , async ( ) => {
645
+ const Cmp = component$ ( ( ) => {
646
+ return (
647
+ < main >
648
+ < div dangerouslySetInnerHTML = { undefined } > </ div >
649
+ < div dangerouslySetInnerHTML = { null ! } > </ div >
650
+ { /* @ts -ignore-next-line */ }
651
+ < div dangerouslySetInnerHTML = { false } > </ div >
652
+ </ main >
653
+ ) ;
654
+ } ) ;
655
+ const { document } = await render ( < Cmp /> , { debug } ) ;
656
+ await expect ( document . querySelector ( 'main' ) ) . toMatchDOM (
657
+ < main >
658
+ < div > </ div >
659
+ < div > </ div >
660
+ < div > </ div >
661
+ </ main >
662
+ ) ;
663
+ } ) ;
664
+
644
665
it ( 'should render textarea value' , async ( ) => {
645
666
const Cmp = component$ ( ( ) => {
646
667
const signal = useSignal ( 'value 123' ) ;
Original file line number Diff line number Diff line change @@ -1089,9 +1089,11 @@ class SSRContainer extends _SharedContainer implements ISSRContainer {
1089
1089
}
1090
1090
1091
1091
if ( key === dangerouslySetInnerHTML ) {
1092
- innerHTML = String ( value ) ;
1093
- key = QContainerAttr ;
1094
- value = QContainerValue . HTML ;
1092
+ if ( value ) {
1093
+ innerHTML = String ( value ) ;
1094
+ key = QContainerAttr ;
1095
+ value = QContainerValue . HTML ;
1096
+ }
1095
1097
// we can skip this attribute for a style node
1096
1098
// because we skip materializing the style node
1097
1099
if ( tag === 'style' ) {
You can’t perform that action at this time.
0 commit comments