我在下面有一个组件,稍后会在另一个组件中使用。
以下是代码:
import React, { PropTypes } from 'react';
const MyComponent = () => (
<div>
<div className="row">
<div className="col-md-12">
<div className="media">
<div className="media-left media-middle">
<a href="#no"><img className="media-object" src={this.props.image} alt="" /></a>
</div>
<div className="media-body"><span className="pull-right">{this.props.name}</span>
<h4 className="media-heading">{this.props.title}</h4>
{this.props.desc}
</div>
</div>
</div>
</div>
</div>
);
MyComponent.propTypes = {
image: PropTypes.string,
name: PropTypes.string,
title: PropTypes.string,
desc: PropTypes.string,
};
export default MyComponent;
//Then on other component
import React from 'react';
import MyComponent from './mycomponent.component';
<MyComponent
title="Title Here"
name="Some Name"
desc="Description here"
image="http://placehold.it/100x100"
/>
问题是它没有渲染,开发人员控制台又返回以下错误:
“TypeError:undefined没有属性”
这里有什么问题,我该如何解决这个问题?
答案 0 :(得分:2)
您必须将道具传递给MyComponent
,如此:
const MyComponent = (props) => (
console.log("example prop is", props.image);
);
答案 1 :(得分:0)
我遇到了类似的问题。这是因为初始数组被定义为空数组[]
。这将引起反应,将其定义为undefined
会导致问题。相反,您可以使用随机元素初始化数组,然后在设置状态时将其替换。
我使用的是-
class App extends React.Component {
state = {
userdata:[], /* Notice that the array is empty*/
};
responseGoogle = (response) => {
console.log(response);
this.setState({userdata: response});
}
我将其更改为
class App extends React.Component {
state = {
userdata:['Hello'], /* Notice that the array has an initial element*/
};
responseGoogle = (response) => {
console.log(response);
this.setState({userdata: response});
}
我不确定是什么问题,但是使用初始元素可以解决问题