React之组件、组件通信

        组件,从概念上类似于 JavaScript 函数。它接受任意的入参(即 “props”),并返回用于描述页面展示内容的 React 元素。

一、函数(无状态)组件和类(有状态)组件

        在react hooks出来之前,函数组件只根据传入的props来展示视图,不涉及对state的操作,也没有生命周期函数,是没有副作用的纯函数。因此对于无状态的组件,建议使用函数式创建的方式。

function Welcome(props) {
  return 

Hello, {props.name}

; }

        在react hooks出来之前,涉及state的组件只能用class的方式。

class Welcome extends React.Component {
  render() {
    return 

Hello, {this.props.name}

; } }

        由于react hooks的出现,函数组件能够通过hooks方法成为有状态组件,再加上react推崇的函数式编程,因此建议都使用函数式的方式来创建组件。

两者的区别:

(1)状态管理:hooks出来之前,函数组件就是无状态组件,不能保管组件的状态,不能调用setState。(Hooks useState)

(2)生命周期:hooks出来之前,函数组件是没有生命周期的,因此生命周期都是来自React.Component。(Hooks useEffect)

(3)调用方式:函数组件的调用方式是直接调用即可,类组件的调用方式需要先new实例化,然后调用实例对象的render方法。

(4)获取渲染时的值:因为class组件中的this指向可以变化,因此可以通过this来获取到当前的不同值。

二、受控组件和非受控组件:针对表单而言

        表单元素如