@@ -253,13 +253,9 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
253
253
name = 'class' ;
254
254
} else if ( isSvgMode && name . match ( / ^ x l i n k : ? ./ ) ) {
255
255
name = name . toLowerCase ( ) . replace ( / ^ x l i n k : ? / , 'xlink:' ) ;
256
- } else if ( DASHED_ATTRS . test ( name ) ) {
257
- name = name . replace ( / ( [ A - Z ] ) / g, ( l ) => '-' + l . toLowerCase ( ) ) ;
258
- } else if ( ! CAMEL_ATTRS . test ( name ) ) {
259
- name = name . toLowerCase ( ) ;
260
256
}
261
257
262
- if ( name === 'htmlfor ' ) {
258
+ if ( name === 'htmlFor ' ) {
263
259
if ( props . for ) continue ;
264
260
name = 'for' ;
265
261
}
@@ -282,7 +278,7 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
282
278
continue ;
283
279
}
284
280
285
- if ( name === 'dangerouslysetinnerhtml ' ) {
281
+ if ( name === 'dangerouslySetInnerHTML ' ) {
286
282
html = v && v . __html ;
287
283
} else if ( nodeName === 'textarea' && name === 'value' ) {
288
284
// <textarea value="a&b"> --> <textarea>a&b</textarea>
@@ -305,6 +301,14 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
305
301
s += ` selected` ;
306
302
}
307
303
}
304
+
305
+ // Convert attribute names to proper html casing
306
+ if ( DASHED_ATTRS . test ( name ) ) {
307
+ name = name . replace ( / ( [ A - Z ] ) / g, ( l ) => '-' + l . toLowerCase ( ) ) ;
308
+ } else if ( ! CAMEL_ATTRS . test ( name ) ) {
309
+ name = name . toLowerCase ( ) ;
310
+ }
311
+
308
312
s += ` ${ name } ="${ encodeEntities ( v ) } "` ;
309
313
}
310
314
}
0 commit comments