react学习笔记3:组件

本文介绍React中的组件化开发,包括组件的创建、调用、传值及嵌套使用等核心概念,并通过实例演示如何将页面划分为多个独立的组件。

1.组件demo

组件是react最重要的功能,react的核心就是组件化开发我们的项目。

我们一个页面可以由n个div组成:那么同样我们把这n个div结构就可以划分成n个react组件,最后形成我们的页面。

我们要布局的页面包含:

header

center

footer

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';

var arr=[
	<div className="header">header</div>,
	<div className="center">center</div>,
	<div className="footer">footer</div>
]
ReactDOM.render(
    <div>
		{arr}
	</div>,
    document.getElementById('root')
);
registerServiceWorker();

170712_vsRr_2352644.png

我们把这三部分改为组件:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';

//设置组件 头
class Header extends React.Component {
  render() {
    return <div className="header">header</div>;
  }
}
//设置组件 中心
class Center extends React.Component {
  render() {
    return <div className="center">center</div>;
  }
}
//设置组件 尾部
class Footer extends React.Component {
  render() {
     return <div className="footer">footer</div>;
  }
}


ReactDOM.render(
    <div>
		<Header />
		<Center />
		<Footer />
	</div>,
    document.getElementById('root')
);
registerServiceWorker();

 

2.创建组件

2.1创建组件

组件采用类的继承方式创建:

//设置组件 头
class Header extends React.Component {
  render() {
    return <div className="header">header</div>;
  }
}

类名首字母大写

2.2调用组建

<Header />

如同单标签的引用方式

 

3.组件传值和接收

3.1传值

在调用位置采用属性的方式设置传递值:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';

//设置组件 头
class Header extends React.Component {
  render() {
    return <div className="header">header</div>;
  }
}
//设置组件 中心
class Center extends React.Component {
  render() {
    return <div className="center">center</div>;
  }
}
//设置组件 尾部
class Footer extends React.Component {
  render() {
     return <div className="footer">footer</div>;
  }
}


ReactDOM.render(
    <div>
		<Header name="小李子" />
		<Center />
		<Footer />
	</div>,
    document.getElementById('root')
);
registerServiceWorker();

3.2接收和显示

this.props.xx去接收:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';

//设置组件 头
class Header extends React.Component {
  render() {
    return <div className="header">header {this.props.name}</div>;
  }
}
//设置组件 中心
class Center extends React.Component {
  render() {
    return <div className="center">center</div>;
  }
}
//设置组件 尾部
class Footer extends React.Component {
  render() {
     return <div className="footer">footer</div>;
  }
}


ReactDOM.render(
    <div>
		<Header name="小李子" />
		<Center />
		<Footer />
	</div>,
    document.getElementById('root')
);
registerServiceWorker();

显现如下:

180748_WW7y_2352644.png

 

4.组件嵌套

4.1嵌套

创建一个组件:

//设置组件 显示性别
class HeaderShowSex extends React.Component {
  render() {
    return <span>性别:男</span>;
  }
}

这个组件在header组件在中调用:

//设置组件 头
class Header extends React.Component {
  render() {
    return <div className="header">header {this.props.name}<HeaderShowSex /></div>;
  }
}

显示如下:

181307_eqMb_2352644.png

4.2嵌套组件传值

我们在header组件调用位置把性别传到HeaderShowSex组件,

我们在header组件用this.props.sex获取,然后在HeaderShowSex组件调用位置用属性方式设置,在HeaderShowSex组件在用this.props.sex接收

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';

//设置组件 头
class Header extends React.Component {
  render() {
    return <div className="header">header {this.props.name}<HeaderShowSex sex={this.props.sex} /></div>;
  }
}
//设置组件 显示性别
class HeaderShowSex extends React.Component {
  render() {
    return <span>性别:{this.props.sex}</span>;
  }
}

//设置组件 中心
class Center extends React.Component {
  render() {
    return <div className="center">center</div>;
  }
}
//设置组件 尾部
class Footer extends React.Component {
  render() {
     return <div className="footer">footer</div>;
  }
}


ReactDOM.render(
    <div>
		<Header name="小李子" sex="男" />
		<Center />
		<Footer />
	</div>,
    document.getElementById('root')
);
registerServiceWorker();

 

5.组件调用写法(单标签和闭合标签)

我们上面都是使用单标签形式调用:

<Header name="小李子" sex="男" />

react还支持闭合标签调用:

<Header name="小李子" sex="男"></Header>

 

转载于:https://my.oschina.net/tbd/blog/1544388

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值