gpt4 book ai didi

reactjs - ReactDOM.render() : Invalid component element. 不要传递组件类,而是确保通过将其传递给 React.createElement 来实例化它

转载 作者:行者123 更新时间:2023-12-03 13:25:34 25 4
gpt4 key购买 nike

当我测试运行 react 时出现此错误

我的文件夹结构很简单,如下所示:

app folder
index.html
index.js
home.js
webpack.config.js
dist folder
bundle.js

index.html 看起来像这样

<!DOCTYPE html>
<html>
<head>
<title>hello world app</title>
<link rel="stylesheet" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src= "../dist/bundle.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>

index.js是这样的:

var React = require('react');
var ReactDOM = require('react-dom');
var Home = require('./Home');

ReactDOM.render( Home, document.getElementById('app'));

和 home.js 像这样:

var React = require('react');
var Home = React.createClass({
render: function(){
return(
<div> hello from home </div>
)
}
});
module.exports = Home;

我通过这个 webpack 配置运行编译代码:

module.exports = {
entry:[
"./app/index.js"
],
output: {
path: __dirname + '/dist',
filename: "bundle.js"
},
module: {
loaders : [
{test: /\.js$/, exclude : /node_modules/, loader: "babel-loader",
query: {
presets: ['react']
}
}
]
}
}

编译后,我运行文件index.html。并且出现了错误 ReactDOM.render(): Invalid component element... 。我做错了什么?

最佳答案

ReactDOM.render 将 React 类的实例作为其第一个参数。您可以直接通过类(class)。

所以而不是

ReactDOM.render(Home, document.getElementById('app'))

尝试如下。

ReactDOM.render(React.createElement(Home), document.getElementById('app'));

或 JSX 对应项

ReactDOM.render(<Home />, document.getElementById('app'));

另外,像下面这样写可能是个好主意。

<script src= "../dist/bundle.js"></script>

在页面底部,而不是在 <head> 中,这样脚本就可以找到 <div id="app"></div> .

关于reactjs - ReactDOM.render() : Invalid component element. 不要传递组件类,而是确保通过将其传递给 React.createElement 来实例化它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36278518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com