一、组件的定义

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. Amazon MWS Scratchpad

    https://mws.amazonservices.com/scratchpad/index.html Use this page to test Amazon MWS API request an ...

  2. Eureka&Zookeeper&Consul 原理与对比

    CAP 定理CAP定理:CAP定理又称CAP原则,指的是在一个分布式系统中,一致性(Consistency).可用性(Availability).分区容错性(Partition tolerance). ...

  3. IDEA将Git本地仓库Push至远程仓库

    转自:https://blog.csdn.net/qq_15653601/article/details/79870996 本地本地仓库项目: 配置Git自动识别本机Git配置

  4. scrapy工具创建爬虫工程

    1.scrapy创建爬虫工程:scrapy startproject scrape_project_name >scrapy startproject books_scrapeNew Scrap ...

  5. js实现限制容器中字符个数

    html: <div class="ellipsis"> 夜空中最亮的星/请指引我走出去/夜空中最亮的星 是否知道/那曾与我同心的身影 如今在哪里/夜空中最亮的星 是否 ...

  6. 【转帖】如果进入CPU的世界,时间会是怎样的?

    如果进入CPU的世界,时间会是怎样的? 2018-02-26 20:52:46 world6 阅读数 1295更多 分类专栏: 网络 缓存服务 架构   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  7. 1.关于Python,你可能不知道的

    启示录 写在前面———— 至于python有多牛逼,这里不介绍了,安装也不说了,网上一堆一堆的安装教程. 本文只介绍需要知道的 常识知识———— 1.python 发音:英 [ˈpaɪθən] 美 [ ...

  8. 关于python的一次性能调优过程

    问题 这两天在公司帮老大写一个程序功能,要求抓取从elasticsearch和kibana服务器上返回的数据,统计所有hits的数据字段ret_code为0的hit,并计算其占有率等一些功能. 功能倒 ...

  9. 【Qt】Qt5.12连接MySQl5.7(亲自测试成功)

    目录 00. 目录 01. Qt5.12连接MySQL5.7测试代码 02. Qt5.12连接MySQL5.7问题描述 03. 解决办法 04. 结果测试 05. 打赏 00. 目录 01. Qt5. ...

  10. 动态script标签同步加载 ps:无打包编译,静态实现静态资源入口动态配置,无编译打包静态资源添加版本号

    /**功能:创建动态标签加载css ,js文件,重点是js文件,利用onloading加递归实现动态标签的同步加载用法:在html文件body底部script内部声明并调用下列函数,obj中写要加载的 ...