一、组件的定义

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子组件

React组件的定义、渲染和传值总结的更多相关文章

  1. 关于React组件之间如何优雅地传值的探讨

    闲话不多说,开篇撸代码,你可以会看到类似如下的结构: import React, { Component } from 'react'; // 父组件 class Parent extends Com ...

  2. React组件复用的方式

    React组件复用的方式 现前端的工程化越发重要,虽然使用Ctrl+C与Ctrl+V同样能够完成需求,但是一旦面临修改那就是一项庞大的任务,于是减少代码的拷贝,增加封装复用能力,实现可维护.可复用的代 ...

  3. react组件间的传值方法

    关于react的几个网站: http://react.css88.com/ 小书:http://huziketang.mangojuice.top/books/react/ http://www.re ...

  4. 编写高性能React组件-传值篇

    很多人在写React组件的时候没有太在意React组件的性能,使得React做了很多不必要的render,现在我就说说该怎么来编写搞性能的React组件. 首先我们来看一下下面两个组件 import ...

  5. react 组件之间传值

    谈及React时,就会想到一个很重要的思想,就是组件化思想.它将可以重用的部分进行组件化开发,形成一个个相对独立的组件,那么组件化后,你也会提出些疑问,组件与组件之间,将怎样进行信息的传递呢?下面来介 ...

  6. React组件之间通过Props传值的技巧(小案例,帮助体会理解props、state、受控组件和非受控组件等)

    本文重要是根据react小书上的一个很简单的例子改编的,加上自己的学习理解,希望可以通过实际案例让大家对概念有更清晰的理解,当然也希望能一块学习. import React,{Component} f ...

  7. React 组件间传值

    壹  .了解React传值的数据 一. 创建组件的方法 一 . 1  通过function声明的组件特点是: 1)function创建的组件是没有state属性,而state属性决定它是不是有生命周期 ...

  8. 深入了解React组件重新渲染的条件和生命周期

    React组件rerender的真正条件 当前组件的State中的属性改变时且当前组件的shouldcomponentupdate返回true,那么当前组件会rerender 组件的props中的任一 ...

  9. React 组件条件渲染的几种方式

    一.条件表达式渲染 (适用于两个组件二选一的渲染) render() { const isLoggedIn = this.state.isLoggedIn; return ( <div> ...

随机推荐

  1. Python之可变参数,*参数,**参数,以及传入*参数,进行解包

    1.定义了一个需要两个参数的函数 def print_str(first, second): print first print second if __name__ == "__main_ ...

  2. 欧姆龙PLC_CP1H_CRC校验

    1.简介 欧姆龙CP1H PLC的CRC校验.CP1H没有CRC校验指令或者功能块,在串口自由协议通信中,如果涉及到CRC校验,需要手动计算CRC值,本程序是一个输入数据,自动计算CRC校验码的程序. ...

  3. Dijkstra算法(朴素实现、优先队列优化)

    Dijkstra算法只能求取边的权重为非负的图的最短路径,而Bellman-Ford算法可以求取边的权重为负的图的最短路径(但Bellman-Ford算法在图中存在负环的情况下,最短路径是不存在的(负 ...

  4. 关于反向生成url

    1.模板渲染 <form action="{% url "bieming" 参数 %}" > <input type="text&q ...

  5. C++用于类型转换的4个操作符

    Dynamic_cast,   const_cast,  static_cast,  reinterpret_cast. (1)reinterpret_cast 用于基本的类型转换.如 in *ip; ...

  6. CentOS7 Python3下安装 TensorToolbox 1.0.22时的一些错误及解决办法

    CentOS7 Python3下安装 TensorToolbox 1.0.22 (python3) [jiangshan@localhost ~]$ pip install TensorToolbox ...

  7. python 之 数据库(多表查询之连接查询、子查询、pymysql模块的使用)

    10.10 多表连接查询 10.101 内连接 把两张表有对应关系的记录连接成一张虚拟表 select * from emp,dep: #连接两张表的笛卡尔积 select * from emp,de ...

  8. VMware虚拟机(Ubuntu)通过主机代理实现——浏览器+终端访问外网

    环境说明:主机win10 + 虚拟机ubunut16.04 + 主机s-h-a-d-o-w-socks win10 主机相关操作配置1: 按下 Win + R 快捷键,输入 cmd ,然后在命令行中输 ...

  9. hadoop mapper reducer

    Local模式运行MR流程------------------------- 1.创建外部Job(mapreduce.Job),设置配置信息 2.通过jobsubmitter将job.xml + sp ...

  10. fabric.js 知识点整理

    fabric.js是一个很好用的 canvas 操作插件,下面整理了一些平时项目中用到的知识点: //1: 获得画布上的所有对象: var items = canvas.getObjects(); / ...