Soy nuevo en mecanografiado. Recibo el siguiente error cuando uso el tipo HTMLElement dentro de un bucle forEach :
ERROR in ./app/javascript/mount.jsx Module build failed (from ./node_modules/babel-loader/lib/index.js): SyntaxError: /Users/me/projects/mathllc/app/javascript/mount.jsx: Unexpected token, expected "," (7:34) 5 | const mountPoints = document.querySelectorAll('[data-react-component]') 6 | mountPoints.forEach((mountPoint) => { > 7 | const dataset = (mountPoint as HTMLElement).dataset | ^ 8 | const componentName = dataset['reactComponent'] 9 | const Component = components[componentName] 10 | if (Component) {Estoy siguiendo este tutorial de @Ryan Bigg: https://egghead.io/blog/rails-graphql-typescript-react-apollo
Mi código está aquí:
import ReactDOM from 'react-dom' export default function mount(components = {}) { document.addEventListener('DOMContentLoaded', () => { const mountPoints = document.querySelectorAll('[data-react-component]') mountPoints.forEach((mountPoint) => { const dataset = (mountPoint as HTMLElement).dataset const componentName = dataset['reactComponent'] const Component = components[componentName] if (Component) { const props = JSON.parse(dataset['props']) ReactDOM.render(<Component {...props} />, mountPoint) } else { console.log( 'WARNING: No component found for: ', dataset.reactComponent, components, ) } }) }) }¡Gracias por cualquier ayuda!
Mirando el error - ERROR in ./app/javascript/mount.jsx ) - parece que no está usando un archivo .tsx y la palabra clave as no es Javascript válido, por lo que debe eliminar el as HTMLElement porque a Javascript no le importa sobre los tipos o cambie el nombre del archivo a mount.tsx , si está utilizando un compilador Typescript en su cadena de compilación.