可以在反应组件中拥有自己的属性吗?
问题描述:
class VideoList extends Component {
constructor(props) {
super(props);
this.videoList = props.videos.map((video) => {
return <VideoListItem video={video} />
})
}
render() {
return (
<ul className="collection">
{this.videoList}
</ul>
)
}
}
我只是想知道是否允许我在反应组件中拥有自己的属性。可以在反应组件中拥有自己的属性吗?
答
嗯,可以在你的反应组件中拥有自己的属性。没有人会责怪你。
但是不要忘记用propType发货,它会为您节省很多时间(通过类型检查来捕获错误)。
参考:https://facebook.github.io/react/docs/typechecking-with-proptypes.html
答
我想你是指将videoList
存储到组件实例?
你可以存储的状态的影片名单,但似乎不必要做到这一点,我将简化VideoList
是一个stateless functional component呈现的传递中作为道具的影片名单:
const VideoList = ({ videos }) => (
<ul className="collection">
{videos.map(video => <VideoListItem video={video} />)}
</ul>
);
的官方文档实际上并没有解释上面的语法,但它基本上是一个没有状态的React组件的语法糖,它只接受props
。 ({ videos })
语法为ES6 Destructuring。 VideoList
组件接收props
,并且此语法将props.videos
作为组件上的变量提取。
此外,在渲染项目列表时,您应为每个VideoListItem
提供某种唯一的key,例如,
<VideoListItem key={video.id} video={video} />
感谢您的指导!这个指南可以帮助我很多:) – hytm
也许,我设置'this.videoList'的东西是我可以从道具计算出来的,所以它不应该设置为状态。 – hytm