<!--
  Please provide a clear and concise description of what the bug is. Include
  screenshots if needed. Please test using the latest version of the relevant
  React packages to make sure your issue has not already been fixed.
-->
Found here: https://github.com/facebook/react/issues/11347#issuecomment-989021700

React version: experimental

## Steps To Reproduce

1. `<my-custom-element onChange={() => console.log('onchange')} />`
2. `querySelector('my-custom-element').dispatchEvent('change')`

<!--
  Your bug will get fixed much faster if we can run your code and it doesn't
  have dependencies other than React. Issues without reproduction steps or
  code examples may be immediately closed as not actionable.
-->

Link to code example: https://codesandbox.io/s/shy-tdd-8b4tq?file=/src/App.js

<!--
  Please provide a CodeSandbox (https://codesandbox.io/s/new), a link to a
  repository on GitHub, or provide a minimal code example that reproduces the
  problem. You may provide a screenshot of the application if you think it is
  relevant to your bug report. Here are some tips for providing a minimal
  example: https://stackoverflow.com/help/mcve.
-->

## The current behavior
`onChange` event handlers don't get called when `change` events are fired.

## The expected behavior
`onChange` event handlers do get called when `change` events are fired.
const container = document.createElement('div');
      ReactDOM.render(<my-custom-element innerText="foo" />, container);
      const customElement = container.querySelector('my-custom-element');
      expect(customElement.getAttribute('innerText')).toBe(null);
      expect(customElement.hasChildNodes()).toBe(false);
      
      
      ReactDOM.render(<my-custom-element innerText="bar" />, container);
      expect(customElement.getAttribute('innerText')).toBe(null);
      expect(customElement.hasChildNodes()).toBe(false);
    });
    
    it('textContent should not work on custom elements', () => {
      const container = document.createElement('div');
      ReactDOM.render(<my-custom-element textContent="foo" />, container);
      const customElement = container.querySelector('my-custom-element');
      expect(customElement.getAttribute('textContent')).toBe(null);
      expect(customElement.hasChildNodes()).toBe(false);
      
      
      ReactDOM.render(<my-custom-element textContent="bar" />, container);
      expect(customElement.getAttribute('textContent')).toBe(null);
      expect(customElement.hasChildNodes()).toBe(false);
    });
    
    it('values should not be converted to booleans when assigning into custom elements', () => {
      const container = document.createElement('div');
      document.body.appendChild(container);
      ReactDOM.render(<my-custom-element />, container);
      const customElement = container.querySelector('my-custom-element');