Reactjs 使用样式对象时,无法读取this.props
我不知道为什么,但我得到了Babel抛出的“未捕获的引用错误:未定义道具”,但我看不出代码有任何错误,除非有所改变。显然我有一些完全愚蠢的盲点 代码如下:Reactjs 使用样式对象时,无法读取this.props,reactjs,Reactjs,我不知道为什么,但我得到了Babel抛出的“未捕获的引用错误:未定义道具”,但我看不出代码有任何错误,除非有所改变。显然我有一些完全愚蠢的盲点 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Am I nutty:</title>
<!-- React JS JS 16.12.0 -->
<script src="https://unpkg.com/react@16.12.0/umd/react.development.js"></script>
<!-- React JS DOM JS 16.12.0 -->
<script src="https://unpkg.com/react-dom@16.12.0/umd/react-dom.development.js"></script>
<!-- Babel JS .6.26.0 -->
<script src="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>
</head>
<body>
<div id="container"></div>
<script type="text/babel">
var letterStyle = {
padding: 10,
margin: 10,
backgroundColor: this.props.bgcolor,
color: "#333",
display: "inline-block",
fontFamily: "monospace",
fontSize: 32,
textAlign: "center"
}
class Letter extends React.Component {
render() {
return (
<div style={letterStyle}>
{this.props.children}
</div>
);
}
}
ReactDOM.render(
<div>
<Letter bgcolor="#333">A</Letter>
<Letter bgcolor="#333">B</Letter>
<Letter bgcolor="#333">C</Letter>
<Letter bgcolor="#333">D</Letter>
</div>, document.querySelector("#container")
)
</script>
</body>
</html>
我疯了吗
var字母样式={
填充:10,
差额:10,
背景颜色:this.props.bgcolor,
颜色:“333”,
显示:“内联块”,
fontFamily:“单空间”,
字体大小:32,
textAlign:“居中”
}
类字母扩展了React.Component{
render(){
返回(
{this.props.children}
);
}
}
ReactDOM.render(
A.
B
C
D
,document.querySelector(“容器”)
)
您的类应该如下所示。类组件应始终使用props调用基构造函数
类字母扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
var字母样式={
填充:10,
差额:10,
背景颜色:this.props.bgcolor,
颜色:“333”,
显示:“内联块”,
fontFamily:“单空间”,
字体大小:32,
textAlign:“居中”
}
返回(
{this.props.children}
);
}
}
在您的代码中,道具不会像上面那样被传递。因此,您会得到无法读取此。props
错误
您应该检查一下如何使用react类组件 您的课程应该如下所示。类组件应始终使用props调用基构造函数
类字母扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
var字母样式={
填充:10,
差额:10,
背景颜色:this.props.bgcolor,
颜色:“333”,
显示:“内联块”,
fontFamily:“单空间”,
字体大小:32,
textAlign:“居中”
}
返回(
{this.props.children}
);
}
}
在您的代码中,道具不会像上面那样被传递。因此,您会得到无法读取此。props
错误
您应该检查一下如何使用react类组件 变量
letterStyle
不在类的作用域内,它不指向类的作用域,而是指向窗口对象,该窗口对象显然没有指定props
方法或变量
我建议您将该变量移动到类中,这样它实际上就可以访问道具
class Letter extends React.Component {
render() {
const letterStyle = {
padding: 10,
margin: 10,
backgroundColor: this.props.bgcolor,
color: "#333",
display: "inline-block",
fontFamily: "monospace",
fontSize: 32,
textAlign: "center"
};
return (
<div style={this.letterStyle}>
{this.props.children}
</div>
);
}
}
类字母扩展了React.Component{
render(){
常量字体样式={
填充:10,
差额:10,
背景颜色:this.props.bgcolor,
颜色:“333”,
显示:“内联块”,
fontFamily:“单空间”,
字体大小:32,
textAlign:“居中”
};
返回(
{this.props.children}
);
}
}
注意:在一些罕见的情况下,您可能希望使用一些基本的备忘录,或者只是将
letterStyle
变量移到render
方法之外,这样子对象就不会过度重新渲染。letterStyle变量在类的范围之外,它不指向类的范围,但是对于window对象,它显然没有指定props
方法或变量
我建议您将该变量移动到类中,这样它实际上就可以访问道具
class Letter extends React.Component {
render() {
const letterStyle = {
padding: 10,
margin: 10,
backgroundColor: this.props.bgcolor,
color: "#333",
display: "inline-block",
fontFamily: "monospace",
fontSize: 32,
textAlign: "center"
};
return (
<div style={this.letterStyle}>
{this.props.children}
</div>
);
}
}
类字母扩展了React.Component{
render(){
常量字体样式={
填充:10,
差额:10,
背景颜色:this.props.bgcolor,
颜色:“333”,
显示:“内联块”,
fontFamily:“单空间”,
字体大小:32,
textAlign:“居中”
};
返回(
{this.props.children}
);
}
}
注意:在一些罕见的情况下,您可能希望使用一些基本的备忘录,或者只是将
letterStyle
变量移到render
方法之外,这样孩子们就不会过度地重新渲染了。我真不敢相信我错过了这一点。谢谢很高兴帮忙:)我真不敢相信我错过了这个。谢谢很乐意帮忙:)好了。这里完全是盲点,太多的浓缩咖啡。谢谢你的分类。@Thomastorstenson我想这应该是公认的答案了。这里完全是盲点,太多的浓缩咖啡。谢谢你的分类。@Thomastorstenson我想这应该是公认的答案