[英]In-browser javascript won't recognize “import” and JSX at the same time
我正在尝试创建一个简单的React应用程序,该应用程序从components
目录中导入组件。 当前,这是我的文件夹结构:
main
|_components
| |_FirstComponent.js
|_index.html
FirstComponent.js
export class FirstComponent extends React.Component{
render(){
return (
<h1>Hello World</h1>
)
}
}
在index.html中,我有脚本加载react,react-dom和babel。 到目前为止,这是我的JS代码:
<script type="module">
import FirstComponent from "./components/FirstComponent.js";
</script>
这给了我错误: Uncaught SyntaxError: Unexpected token '<'
JSX解析是一个错误,但是当我将脚本类型切换为text/babel
:
<script type="text/babel">
import FirstComponent from "./components/FirstComponent.js";
</script>
我收到此错误: Inline Babel script:2 Uncaught ReferenceError: require is not defined
换句话说,如果类型是模块,则浏览器无法读取JSX,但是如果类型是babel,则浏览器将无法识别要求,也就是导入。
如何使浏览器正确加载组件?
解决方法是,只需执行以下操作即可将FirstComponent导入到index.html页面:
<script type="text/babel" src="./components/FirstComponent.js"></script>
在FirstComponent.js中, 删除import和export语句,以便文件仅具有FirstComponent类/功能组件 。 这会将类作为嵌入式babel脚本加载,您的组件将可以使用。 您可以使用index.html底部的ReactDOM.render()渲染组件。 这是一个简单的解决方法。
FirstComponent.js
// No import statements
class FirstComponent extends React.Component{
render(){
return (
<h1>Hello World</h1>
)
}
}
// No export default statement
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.