04. react 初次见面---组件&Props

    组件从概念上看就像是函数,它能够接收任意的输入值(称之为“props”),并返回一个须要在页面上展现的React元素。javascript

一、组件定义的两种方式

1.1 函数定义组件java

    定义一个组件最简单的方式是使用JavaScript函数:函数

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

    该函数是一个有效的React组件,它接收一个单一的“props”对象并返回了一个React元素。咱们之因此称这种类型的组件为函数定义组件,是由于从字面上来看,它就是一个JavaScript函数。this

1.2 ES6 class 来定义组件spa

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

二、组件渲染

    React元素也能够是用户自定义的组件。当React遇到的元素是用户自定义的组件,它会将JSX属性做为单个对象传递给该组件,这个对象称之为“props”。code

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

const element = <Welcome name="Sara" />;
ReactDOM.render(
  element,
  document.getElementById('root')
);

    上段代码会在页面上渲染出”Hello,Sara”。这里定义组件使用的是第一种方式 函数定义组件,我本身尝试了第二种 ES6 class方式来定义组件,报错。先日后学,再边学便理解。对象

    官网上告诉咱们上段代码执行过程以下:ip

  1. 咱们对 <Welcome name="Sara" /> 元素调用了 ReactDOM.render() 方法。
  2. React将 {name: 'Sara'}做为props传入并调用 Welcome组件。
  3. Welcome组件将 <h1>Hello, Sara</h1>元素做为结果返回。
  4. React DOM将DOM更新为 <h1>Hello, Sara</h1>

警告:element

组件名称必须以大写字母开头get

例如,<div /> 表示一个DOM标签,但 <Welcome /> 表示一个组件,而且在使用该组件时你必须定义或引入它。

3. 组件组合 

    组件能够在它的输出中引用其它组件,这就可让咱们用同一组件来抽象出任意层次的细节。在React应用中,按钮、表单、对话框、整个屏幕的内容等,这些一般都被表示为组件。

警告:

组件的返回值只能有一个根元素。这也是咱们要用一个<div>来包裹全部<Welcome />元素的缘由。

 4. 提取组件

    你能够将组件切分为更小的组件。

提取组件一开始看起来像是一项单调乏味的工做,可是在大型应用中,构建可复用的组件彻底是值得的。当你的UI中有一部分重复使用了好几回(好比,ButtonPanelAvatar),或者其自身就足够复杂(好比,AppFeedStoryComment),相似这些都是抽象成一个可复用组件的绝佳选择,这也是一个比较好的作法。

5. Props的只读性

    不管是使用函数或是类来声明一个组件,它决不能修改它本身的props。

相关文章
相关标签/搜索