版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35713752/article/details/82699020
组件:
通过组件,可以将UI拆分成独立的,可重复使用的部分,从概念上讲,组件就像javaScript函数,它们接受任意输入(称之为道具),并返回描述屏幕上应显示内容的Recat元素。
1.定义一个简单的组件并且使用组件(注意:组件名称第一个字母必须大写)
function Demo(user){
return <div>
<h1>hello,{user.name};</h1>
<h2>请问你是{user.age}岁吗?</h2>
</div>;
}
const _demo =<Demo name='Jay' age='16' />;
ReactDOM.render(
_demo,
document.getElementById('root')
)
代码运行效果图:
2.组件内镶入组件
function Detail(article){
return <h3>文章详情:{article.name}, {article.detail}</h3>;
}
function Title(article){
return <h1>文章标题:{article.title}</h1>;
}
function Block(){
return (
<div>
<Title title='今天早上你吃了什么?'/>
<Detail name='张三' detail='我吃了一个苹果。'/>
<Detail name='李四' detail='我吃了一个煎饼。'/>
</div>
);
}
ReactDOM.render(
<Block/>,
document.getElementById('root')
)
代码运行效果图:
代码说明:
第一次调用Detail(article)时
article === {name='张三',detail='我吃了一个苹果'} ,
第二次
调用Detail(article)时
article === {name='李四',detail='我吃了一个煎饼'} ;
由此可见,如 <Detail name='张三' detail='我吃了一个苹果。'/> 这样,其中的name属性,detail属性,其实都会集合在article对象里面,可以根据自己的需要自定义属性。调用的时候传递不同的参数就可以了。
3.社交媒体网站上的评论
function formatDate(date) {
return date.toLocaleDateString();
}
function Comment(props) {
return (
<div className="Comment">
<div className="UserInfo">
<img
className="Avatar"
src={props.author.avatarUrl}
alt={props.author.name}
/>
<div className="UserInfo-name">
{props.author.name}
</div>
</div>
<div className="Comment-text">{props.text}</div>
<div className="Comment-date">
{formatDate(props.date)}
</div>
</div>
);
}
const comment = {
date: new Date(),
text: 'I hope you enjoy learning React!',
author: {
name: 'Hello Kitty',
avatarUrl: 'http://placekitten.com/g/64/64',
},
};
ReactDOM.render(
<Comment
date={comment.date}
text={comment.text}
author={comment.author}
/>,
document.getElementById('root')
);
代码运行效果图:
这个示例代码虽然没有镶入自定义的组件,但是在数据引用上清晰明了,当然可以把里面的样式拆分成更小的自定义组件然后镶入调用,调用方法同示例2。
总结:
以上有3个示例,主要是学习组件的创建,使用,箱套,结合数据。可以复制下来在 这里 的html使用,可以直接看到运行效果。