当我遇到一个奇怪的错误Uncaught TypeError: inst.render is not a function
时,我正在使用React和ReactDOM显示一个非常基本的Hello World。请参阅此JSBin。
我经常使用React,但是ES6是新手。我在这里没有看到任何想法?
错误似乎在说Hello
没有render
方法,但我不确定。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<script src="
https://cdnjs.cloudflare.com/ajax/libs/redux/3.0.4/redux.js" type="text/javascript"></script>
<script src="https://fb.me/react-0.14.0.js"></script>
<script src="https://fb.me/react-dom-0.14.0.js"></script>
</head>
<body>
<div id="root"></div>
<script>
const Hello = () => {
<h1>Hi</h1>
};
const foo = () => {
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
}
foo();
</script>
</body>
</html>
答案 0 :(得分:12)
<强>更新强>
您也可以在案例中使用arrow
或const Hello = () => <h1>Hi</h1>;
。但是,您需要返回组件。
React.Component
注意缺少花括号。在ES6中,没有花括号的arrow function返回其正文表达式的结果。
<强>原始强>
要将React与ES6一起使用,您需要继承class Hello extends React.Component {
render() {
return <h1>Hi</h1>
}
}
类。
{{1}}
请参阅其文档中的here。
答案 1 :(得分:6)
当我渲染的组件是undefined
时,我遇到了这个错误。我以前从未见过这个错误。我的应用也使用了redux。
在我的情况下,<Book />
方法中的render()
组件尚未定义。
所以修复很简单:
import Book from './Book'
如果您遇到此问题,我的建议是检查容器组件的render方法,看看是否还没有定义您尝试渲染的任何组件。
对我来说似乎很奇怪,它应该给出以下错误:
未捕获(在承诺中)ReferenceError:未定义图书
答案 2 :(得分:4)
我收到此错误是因为我在组件的return someObj
中无意中调用了constructor
。一旦我删除它,问题就解决了。
答案 3 :(得分:4)
TypeError: instance.render is not a function
函数时,会出现 render()
错误。
答案 4 :(得分:3)
另一种解决方案是使用implicit return。只需将Hello
组件的返回值括在括号中而不是括号中,就像这样(JSBin)
const Hello = () => (
<h1>Hi</h1>
);
答案 5 :(得分:0)
我在webstorm / lint的推荐下将 静态 关键字添加到App组件时出现此错误。尝试删除所有 静态 关键字。
static App extends Component {...
答案 6 :(得分:0)
const Hello = () => {
<h1>Hi</h1>
};
与
不同const Hello = () => (
<h1>Hi</h1>
);
答案 7 :(得分:0)
请记住,您创建的每个react组件都将返回某些内容。如果它是一个类,请确保您的类中具有render函数。
答案 8 :(得分:0)
在我的情况下,这是因为我没有在组件中包含render函数(即使我不需要渲染任何元素)-返回null似乎也可以工作:
# doesn't work
class BarChart extends Component {
}
# works
class BarChart extends Component {
render() {
return null;
}
}
答案 9 :(得分:0)
任何类组件都必须有包含每个返回内容的 render() 方法来解决这个问题。
<块引用>渲染 = ()=> { 返回 ( 内容)}
答案 10 :(得分:0)
由于拼写错误,我收到了这个错误。我把它写成 rendor() 而不是 render()。
答案 11 :(得分:0)
遇到了类似的问题。 Render 内部的返回不正确。 一旦直接使用 ReactDOM.render 测试了文件并进行了一些更改,问题就得到了解决。
答案 12 :(得分:0)
我的问题是孩子导入的类;它的拼写错误是 return()
而不是 render()
-- 存在多个 return()
,只是将最外面的一个更改为 render()
。
线索是当子元素被移除时一切都呈现得很好。