React组件的定义、渲染和传值总结

一、组件的定义

 

1、使用JavaScript函数定义 Welcome.js

import React from 'react';

function Welcome() {
  return (
    <div>我是一个组件</div>
  );
}

export default Welcome;

 

2、使用 ES6 class 定义 Welcome.js

import React from 'react';

class Welcome extends React.Component {
  render() {
    return (
      <div>我是一个组件</div>
    );
  }
}

export default Welcome;

 

 

二、组件的渲染

index.js 文件:

import React from 'react';
import ReactDOM from 'react-dom';
import Welcome from './Welcome';

ReactDOM.render(
  <Welcome />,
  document.getElementById('root')
);

 

 

三、复合组件

 

1、通过创建多个组件来合成一个组件

import React from 'react';

function Name(props) {
  return (
    <p>我是{props.name}</p>
  );
}

function Age(props) {
  return (
    <p>我{props.age}岁</p>
  );
}

function Sex(props) {
  return (
    <p>我是一个{props.sex}人</p>
  );
}

function Me() {
  return (
    <div>
      <Name name="海牛大大" />
      <Age age="22" />
      <Sex sex="男" />
    </div>
  );
}


export default Me;

 

2、渲染合成的组件

import React from 'react';
import ReactDOM from 'react-dom';
import Me from './Me';

ReactDOM.render(
  <Me />,
  document.getElementById('root')
);

运行结果:

 

 

四、组件之间的传值

 

1、父组件传给子组件

父组件通过自定义属性进行传值,这里以传 lastName 的值为例:

Parent.js

import React from 'react'
import Child from './Child'

class Parent extends React.Component {
  render() {
    return (
      <div>
        <Child lastName='Liu' />
      </div>
    )
  }
}

export default Parent;

 

子组件通过 this.props 获取,这里接收父组件传过来 lastName 的值

Child.js

import React from 'react'

class Child extends React.Component {
  constructor(props) {
    super(props);
    this.state = {}
  }
  render() {
    return (
      <div>
        <h1>My lastname is {this.props.lastName}</h1>
      </div>
    )
  }
}

export default Child;

 

渲染父组件:

ReactDOM.render(
  <div><Parent /></div>,
  document.getElementById('root')
);

 

运行结果:

 

2、子组件传给父组件

利用回调来完成,父组件传递一个函数,这里以传 fn 为例

import React from 'react'
import Child from './Child'

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      fontColor: ''
    }
  }

  render() {
    return (
      <div>
        <h1 style={{color:this.state.fontColor}}>标题</h1>
        <Child fn={(e) => this.setState({fontColor: e})} />
      </div>
    )
  }
}

export default Parent;

 

子组件将要传递的值作为参数,并调用父组件传递的函数,这里将 red 作为参数调用

import React from 'react'

class Child extends React.Component {
  constructor(props) {
    super(props);
    this.state = {}
  }

  render() {
    return (
      <div>
        <button onClick={(e) => this.props.fn('red')}>
          单击改变标题颜色
        </button>
      </div>
    )
  }
}

export default Child;

 

运行结果:

 

3、兄弟组件之间的传值

A子组件先传给父组件,父组件再传给B子组件 

 

posted @ 2019-08-07 20:43  Leophen  阅读(584)  评论(0编辑  收藏  举报