Support onLoad and onError on <link> (#11825)

* Support link event on Fiber component

* Update unit test

* prettier format

* Update test description

* Update ReactDOMComponent-test.js
This commit is contained in:
Roderick Hsiao 2018-01-05 10:14:16 -08:00 committed by Dan Abramov
parent 4e044f553f
commit e74f3ce565
2 changed files with 38 additions and 0 deletions

View File

@ -1310,6 +1310,42 @@ describe('ReactDOMComponent', () => {
expect(console.log.calls.argsFor(1)[0]).toContain('onLoad called');
}
});
it('should receive a load event on <link> elements', () => {
const container = document.createElement('div');
const onLoad = jest.fn();
ReactDOM.render(
<link href="http://example.org/link" onLoad={onLoad} />,
container,
);
const loadEvent = document.createEvent('Event');
const link = container.getElementsByTagName('link')[0];
loadEvent.initEvent('load', false, false);
link.dispatchEvent(loadEvent);
expect(onLoad).toHaveBeenCalledTimes(1);
});
it('should receive an error event on <link> elements', () => {
const container = document.createElement('div');
const onError = jest.fn();
ReactDOM.render(
<link href="http://example.org/link" onError={onError} />,
container,
);
const errorEvent = document.createEvent('Event');
const link = container.getElementsByTagName('link')[0];
errorEvent.initEvent('error', false, false);
link.dispatchEvent(errorEvent);
expect(onError).toHaveBeenCalledTimes(1);
});
});
describe('updateComponent', () => {

View File

@ -485,6 +485,7 @@ export function setInitialProperties(
break;
case 'img':
case 'image':
case 'link':
trapBubbledEvent('topError', 'error', domElement);
trapBubbledEvent('topLoad', 'load', domElement);
props = rawProps;
@ -870,6 +871,7 @@ export function diffHydratedProperties(
break;
case 'img':
case 'image':
case 'link':
trapBubbledEvent('topError', 'error', domElement);
trapBubbledEvent('topLoad', 'load', domElement);
break;