reactjs 无法读取未定义的 属性 'keys'
reactjs Cannot read property 'keys' of undefined
我正在通过教程学习 reactjs,运行 遇到了这个错误。也就是说 "Cannot read property 'keys' of undefined" 我的代码非常少,所以我认为它与语言的结构有关。有谁知道这个问题和可能的解决方案吗?
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/6.1.19/browser.min.js"></script>
<title>ReactJs</title>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
var HelloWorld = ReactDOM.createClass({
render: function() {
return
<div>
<h1>Hello World</h1>
<p>This is some text></p>
</div>
}
});
ReactDOM.render(
<HelloWorld />, document.getElementById('app'));
</script>
</body>
</html>
编辑:奇怪的是,在我们上面的评论之后,我检查它是否确实是 babel 核心版本,我在我的 fiddle 中使用这个:
https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js
第二次我切换到你上面的版本我得到这个:
Uncaught TypeError: Cannot read property 'keys' of undefined
使用 React.createClass
而不是 ReactDOM.createClass
并将多行 html 括在括号中,如下所示:
工作示例:https://jsfiddle.net/69z2wepo/38998/
var Hello = React.createClass({
render: function() {
return (
<div>
<h1>Hello World</h1>
<p>This is some text</p>
</div>
)
}
});
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
我之前没有使用过 React,但我发现有几件事可能会导致您遇到问题。首先,React.createClass
而不是 ReactDOM.createClass
。其次,您需要将 html 括在括号中:
var HelloWorld = React.createClass({
render: function() {
return (
<div>
<h1>Hello World</h1>
<p>This is some text></p>
</div>
);
}
});
这应该可以正常工作
今天是我第一天使用 React,我在尝试使用 Babel 转译 JSX 时遇到了这个问题!
问题出在您尝试使用的版本上,请改用这个版本:
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
不要忘记在 <script>
标签中写 type="text/babel"
,你将在其中写入 JSX 让 Babel 为你转译它,如果你不这样做,你会发现这个错误(因为我也遇到过!:D):
Uncaught SyntaxError: Unexpected token <
澄清一下,因为其他答案有点令人费解。问题是使用 "babel-core" 而不是 "babel-standalone"。只需查找 babel-standalone 的 cdn。
https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.29/browser.js"></script>
这是 babel-core 的版本,它没有给我如下所示的错误:
如果要使用最新版本,可以使用最新的单机版。 (截至 2018 年 11 月 22 日)
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.js"></script>
但这会给出以下警告:
"You are using the in-browser Babel transformer. Be sure to precompile your scripts for production - https://babeljs.io/docs/setup/"
我正在通过教程学习 reactjs,运行 遇到了这个错误。也就是说 "Cannot read property 'keys' of undefined" 我的代码非常少,所以我认为它与语言的结构有关。有谁知道这个问题和可能的解决方案吗?
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/6.1.19/browser.min.js"></script>
<title>ReactJs</title>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
var HelloWorld = ReactDOM.createClass({
render: function() {
return
<div>
<h1>Hello World</h1>
<p>This is some text></p>
</div>
}
});
ReactDOM.render(
<HelloWorld />, document.getElementById('app'));
</script>
</body>
</html>
编辑:奇怪的是,在我们上面的评论之后,我检查它是否确实是 babel 核心版本,我在我的 fiddle 中使用这个:
https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js
第二次我切换到你上面的版本我得到这个:
Uncaught TypeError: Cannot read property 'keys' of undefined
使用 React.createClass
而不是 ReactDOM.createClass
并将多行 html 括在括号中,如下所示:
工作示例:https://jsfiddle.net/69z2wepo/38998/
var Hello = React.createClass({
render: function() {
return (
<div>
<h1>Hello World</h1>
<p>This is some text</p>
</div>
)
}
});
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
我之前没有使用过 React,但我发现有几件事可能会导致您遇到问题。首先,React.createClass
而不是 ReactDOM.createClass
。其次,您需要将 html 括在括号中:
var HelloWorld = React.createClass({
render: function() {
return (
<div>
<h1>Hello World</h1>
<p>This is some text></p>
</div>
);
}
});
这应该可以正常工作
今天是我第一天使用 React,我在尝试使用 Babel 转译 JSX 时遇到了这个问题!
问题出在您尝试使用的版本上,请改用这个版本:
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
不要忘记在 <script>
标签中写 type="text/babel"
,你将在其中写入 JSX 让 Babel 为你转译它,如果你不这样做,你会发现这个错误(因为我也遇到过!:D):
Uncaught SyntaxError: Unexpected token <
澄清一下,因为其他答案有点令人费解。问题是使用 "babel-core" 而不是 "babel-standalone"。只需查找 babel-standalone 的 cdn。
https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.29/browser.js"></script>
这是 babel-core 的版本,它没有给我如下所示的错误:
如果要使用最新版本,可以使用最新的单机版。 (截至 2018 年 11 月 22 日)
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.js"></script>
但这会给出以下警告:
"You are using the in-browser Babel transformer. Be sure to precompile your scripts for production - https://babeljs.io/docs/setup/"