this.props.xxx是未定义的,但使用与打字稿的反应,但在ES5中正常工作?
最近我开始学习ES5的反应,但现在试图在我的应用程序中使用类型 脚本。任何人都可以告诉我为什么我无法使用{this.props.people}打印 值,但它在按预期工作,当我 使用{this.state.people}。我已经从这个网站的例子。 请问我这里缺少什么?this.props.xxx是未定义的,但使用与打字稿的反应,但在ES5中正常工作?
Site
import * as React from 'react'; class About extends React.Component<any, any> {
constructor(props: any) {
super(props);
console.log(About);
const people = [];
for (let i = 0; i < 10; i++) {
people.push({
name: i,
country: i + i
});
}
this.state = {people};
}
public render() {
return (
<div>
{this.props.people.map((person: any, index: number) => (
<p key={index}>Hello, {person.name} from {person.country}!</p>
))}
</div>
);
}
}
export default About;
回答:
因为this.props.people
的东西,当你父组件派人支撑所填充。因为您正在将它设置在您的构造函数中,因此可以访问this.state.people
。
它与ES5
或ES6
无关。顺便说一句,你正在使用箭头功能ES6
。
class Parent extends React.Component { render(
return (
<Child people=[1, 2, 3] />
)
)
}
class Child extends React.Component {
constructor(props) {
this.state = {
people: [5, 6, 7]
}
}
render() {
return (
<div>
{this.props.people} // Will render [1, 2, 3], coming from Parent
{this.state.people} // Will render [5, 6, 7], coming from Constructor
</div>
)
}
}
回答:
这是因为在你的榜样的人的道具是从来没有传下来的,它只是在构造函数中产生和设定的状态,你将不得不使用this.state.people。
如果你想使用道具,你必须通过父组件传递给人。看看components-props documentation
以上是 this.props.xxx是未定义的,但使用与打字稿的反应,但在ES5中正常工作? 的全部内容, 来源链接: utcz.com/qa/258653.html