React 组件基本使用

  React 提供了两种方式来声明组件,一种是函数式,一种是类式,就是用es6 class, 我们所有的组件都继承自React.Component.

  函数式很简单,就像我们平常写函数一个,接受一个参数作为输入,然后进行相应的输出,只不过它输出的jsx.

// welcome 函数式组件。
function Welcome(props) {
    return  <h1> {props.name}</h1>
}

  类式 写法如下:

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

  声明组件以后,怎么使用这个组件? 如果组件还要接受参数,怎样进行参数传递?把组件名放到一个自闭合html 标签中,进行调用,传参则像是给html标签写属性,属性名 = 属性值,如name =”Jason” , 组件内部的props 则把这些属性组合在一起形成对象{name: “jason”}

<Welcome name="Jason" /> // 标签一定要闭合,就是后面的/不能忘记

  通过调用,我们返回了 <h1> Jason</h1>, 很像html 代码,其实它是 React 所说的虚拟DOM,  并不是真实的DOM, 我们要把虚拟DOM 渲染成真实的DOM,才能显示到页面中,这需要用到ReactDOM的render 方法,它接受的第一个参数,就是虚拟DOM, 第二个参数就是我们要把DOM 渲染到什么地方。

ReactDOM.render(
    <Welcome name="Jason" />,
    document.getElementById(‘root‘)
);

  这就是react组件最简单的使用,现在写一个html 页面,引入react reactdom 等,可以看到页面中输入了Jason

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello World</title>
    <script src="https://unpkg.com/[email protected]/dist/react.js"></script>
    <script src="https://unpkg.com/[email protected]/dist/react-dom.js"></script>
    <script src="https://unpkg.com/[email protected]/babel.min.js"></script>
  </head>
  <body>
    <div id="root"></div>
    <script type="text/babel">

      // welcome 函数式组件。
      function Welcome(props) {
        return  <h1> {props.name}</h1>
      }

      // 渲染成真实的DOM
      ReactDOM.render(
        <Welcome name="Jason" />,
        document.getElementById(‘root‘)
      );
    </script>
  </body>
</html>

  为了调用简单,我们可以把组件的调用赋值给一个变量,然后在 render 方法中直接使用这个变量作为第一个参数, 这里对name 参数进行了更改,以便看出区别。可以看到页面中输出sam

//  组件的调用结果赋值给一个变量
const nameElem = <Welcome name="sam" />
ReactDOM.render(
  nameElem,  //  在render 中直接使用变量
  document.getElementById(‘root‘)
);

  有时我们还要把小的组件进行组合,形成大的组件,这里也可以用函数声明的方式

//  组件的组合
function App() {
  return (
    <div>
      <Welcome name="Sam" />
      <Welcome name="Jason" />
    </div>
  );
}

  对于这样的组件,在调用render 方法进行渲染的时候,要对函数名用html 标签进行包裹,形成一个自闭合标签。

ReactDOM.render(
  <App />,
  document.getElementById(‘root‘)
);

  script 内容更改如下,可以看到页面上输出sam jason

    <script type="text/babel">

      // welcome 类式组件。
      class Welcome extends React.Component {
        render() {
          return  <h1> {this.props.name}</h1>
        }
      }
      //  组件的组合
      function App() {
        return (
          <div>
            <Welcome name="Sam" />
            <Welcome name="Jason" />
          </div>
        );
      }

    ReactDOM.render(
      <App />,  //自闭合标签
      document.getElementById(‘root‘)
    );

    </script>
时间: 2024-10-14 10:40:09

React 组件基本使用的相关文章

如何写好react组件

react 组件方面: 总结 React 组件的三种写法 及最佳实践 [涨经验] React组件编写思路(一) 使用react-router实现单页面应用时设置页面间过渡的两种方式 [翻译]基于 Create React App路由4.0的异步组件加载(Code Splitting) React进阶--使用高阶组件(Higher-order Components)优化你的代码 Higher-order Components 高阶组件 redux方面: Redux-saga 中文文档 https:

React 组件复合

React组件复合 · 通过React写组件时,应当尽可能地将组件分为更小的更多的组件,然后再复合组件. 比如下面的评论组件就是一个组件,一个庞大的组件,这时我们还没有将之分解,更没有复合: function Comment(props) { return ( <div className="Comment"> <div className="UserInfo"> <img className="Avatar" sr

二、React初体验之React组件创建

(中间因为应付各种考试,处理其他事情,隔了好时间没更新,现在终于有时间了,续上!) 本文为React初始体验,因此先不考虑文件如何组织,尽量以最简单的方式让大家了解React其中的原理. 在创建组件(component)之前,大家首先需要了解一些基础知识.有ES6.JSX语法等基础知识的同学请跳过下面一段. ES6是JavaScript的最新标准,里面新增了许多语法方式,甚至出现了“类”的继承方式,我个人暂且把他们理解为新增了许多“语法糖”,这些“语法糖”可能带给老手的是方便,而对于我们这些菜鸟

react组件渲染的一些想法

最近一直在思考一个问题,react的单向数据流面对深层次组件集合(redux connect方法返回的组件,即一项完整的功能)时,数据该如何传递???redux帮助我们解决了什么问题??? 我使用了redux+react,发现redux并没有解决react组件之间数据传递问题.只是把数据中心化与避免了父组件取子孙组件的数据时那繁琐的回调,却增加了三个麻烦的东西action.reducer.mapStateProps.复杂的处理流程:action里新增一条数据,reducer就需要增加一个对该数据

React组件性能优化

转自:https://segmentfault.com/a/1190000006100489 React: 一个用于构建用户界面的JAVASCRIPT库. React仅仅专注于UI层:它使用虚拟DOM技术,以保证它UI的高速渲染:它使用单向数据流,因此它数据绑定更加简单:那么它内部是如何保持简单高效的UI渲染呢? React不直接操作DOM,它在内存中维护一个快速响应的DOM描述,render方法返回一个DOM的描述,React能够计算出两个DOM描述的差异,然后更新浏览器中的DOM. 就是说R

React 组件之间如何交流

原文  http://blog.51yuekan.com/2015/07/23/2015-07-19-react-component-communicate/ 主题 React 前言 今天群里面有很多都在问关于 React 组件之间是如何通信的问题,之前自己写的时候也遇到过这类问题.下面是我看到的一篇不错英文版的翻译,看过我博客的人都知道,我翻译可能不会按部就班,会尽可能用中文的意思,来将作者要讲述的技术描述清楚.英文能力有限,如果有不对的地方请跟我留言,一定修改--^_^ 原著序 处理 Rea

封装react组件——三级联动

思路: 数据设计:省份为一维数组,一级市为二维数组,二级市/区/县为三维数组.这样设计的好处在于根据数组索引实现数据的关联. UI组件: MUI的DropDownMenu组件或Select Field组件.将省市县数据定位常量,在UI组件里引用,通过数组遍历. 数据设计代码:(鉴于数据比较多,只列举部分) provinceData.js /********** 省级数据 **********/ export const provinces =['安徽省','澳门特别行政区','北京']; /**

#003 React 组件 继承 自定义的组件

主题:React组件 继承 自定义的 组件 一.需求说明 情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属性,怎么办? [和 面向对象的语言,C#,Java 的基类 思想是 一样的] 如果公用的东西,是一些方法,可以 使用 React 的 Mixins(ES5) ,高阶组件(ES6)[高阶函数不太了解,如何使用,去找下资料 ] 但是如果有公用的属性,那么就有点 力不从心了 在想,React 中,是否可用

React 组件间通讯

React 组件间通讯 说 React 组件间通讯之前,我们先来讨论一下 React 组件究竟有多少种层级间的关系.假设我们开发的项目是一个纯 React 的项目,那我们项目应该有如下类似的关系: 父子:Parent 与 Child_1.Child_2.Child_1_1.Child_1_2.Child_2_1 兄弟:Child_1 与 Child_2.Child_1_1 与 Child_2.etc. 针对这些关系,我们将来好好讨论一下这些关系间的通讯方式. (在 React 中,React 组