React文档: 组件

119 阅读1分钟

一. 组件声明

两种声明是等效的,都是React的组件.

1. 函数类组件

函数类组件本身就是一个JavaScript函数, 个人认为比较简单,类似如下代码

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

2. class类组件

class类组件类似如下,比较健全的声明,类似如下代码

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

二. 组件props

React默认JSX语法中, 小写字母开头的组件都视为原生组件,大写字母开头的认为是React组件

1. props概述

组件的props是JSX接受到的属性和子组件,其被转为单个对象传递给组件内部, 称之为props.

如下代码中,JSX表达式element的name="Sara"则被封装为一个对象({name: 'Sara'})传给Welcome组件,Welcome组件内用props调用.

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

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

2. props只读性

props是只读的,这点跟Vue一样的, 如需组件内部状态灵活改变, 需要组件的state, 类似于Vue中子组件声明data属性来接受props.

三. 组件state

state类似于Vue组件内部被定义的data属性,组件内部能够访问到,外部无法访问, state的属性值也可以作为props被传递到其子组件.

1. state更新

必须显式的调用setState方法, 声明state必须在constructor内部完成.