Allow custom attribute named `on` to be passed on to elements (#11153)
* Allow single `on` property for custom elements * Remove test from ReactDOMComponent-test * Allow custom attribute named 'on' to be passed * Check property length instead of comparing strings
Georgios Giannoutsos Barkas committed
Oct 10, 2017 at 02:31 UTC
65b16b1c7e4d0e5e622c733a3f106901e515124d
3 files changed
+8
-2
src/renderers/dom/shared/DOMProperty.js
+2
-1
@@ -205,7 +205,8 @@ var DOMProperty = {
205
}
206
if (
207
(name[0] === 'o' || name[0] === 'O') &&
208
- (name[1] === 'n' || name[1] === 'N')
208
+ (name[1] === 'n' || name[1] === 'N') &&
209
+ name.length > 2
210
) {
211
return false;
212
}
src/renderers/dom/shared/__tests__/ReactDOMServerIntegration-test.js
+5
@@ -991,6 +991,11 @@ describe('ReactDOMServerIntegration', () => {
991
);
992
expect(e.getAttribute('onunknownevent')).toBe(null);
993
});
994
+
995
+ itRenders('custom attribute named `on`', async render => {
996
+ const e = await render(<div on="tap:do-something" />);
997
+ expect(e.getAttribute('on')).toEqual('tap:do-something');
998
+ });
999
});
1000
1001
describe('elements and children', function() {
src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js
+1
-1
@@ -70,7 +70,7 @@ if (__DEV__) {
70
return true;
71
}
72
73
- if (lowerCasedName.indexOf('on') === 0) {
73
+ if (lowerCasedName.indexOf('on') === 0 && lowerCasedName.length > 2) {
74
warning(
75
false,
76
'Unknown event handler property `%s`. It will be ignored.%s',