美文网首页
React 初探(一)

React 初探(一)

作者: bowen_wu | 来源:发表于2019-01-03 19:34 被阅读249次

最近刚刚做完一个移动端的 React 的项目,想把其中的一些问题记录一下。

整体结构

  1. 学习 React
  2. 上手一个项目

概述

React is a JavaScript library for building user interfaces.

  • 在原生 JS 中,我们都是进行 DOM 操作。当有一些操作时,我们总是先去 DOM 中拿到有用的信息,之后再进行一些逻辑的更改,最后再填充到 DOM 中。
  • 在 React 中,其利用了一些技术,使得我们只需要在内存中存储一些有用的数据,之后生成标签,并渲染到 DOM 中,当有一些操作时,我们仅仅需要更改内存中的一些数据,之后重新生成标签,并重现渲染到 DOM 中。

那么如何使用 React 生成标签?又是如何将标签渲染到 DOM 中的呢?

上手一个 demo

React.createElement()
直接在线运行这个 demo,当点击 change button 的时候,文字将会改变。代码主要写了以下:
  1. 声明变量 textonButtonClick 函数,函数里面主要是更改 text 变量,之后运行 render 函数
  2. 运行 render 函数
  3. 声明 render 函数,render 函数主要做了:
    • 创建 span + button + div
    • 运行了 ReactDOM.render

通过这个 demo 可以知道:

  • 在 React 中使用 React.createElement 生成标签
  • 在 React 中使用 ReactDOM.render 函数将标签渲染到 DOM 中
  • 在 React 中只需要更改变量,之后重新 render 便可以更新 DOM

API

React.createElement()

React.createElement(
  type,
  [props],
  [...children]
)
  • 创建并返回给定类型的新 React 元素。类型参数可以是标签名的字符串(例如 div 或者 span)、React 组件类型(class 或者 function)或者是 React fragment 类型。
  • 当使用 JSX 编写代码时,代码将会转换为使用 React.createElement(),如果使用 JSX,你通常将不会调用 React.createElement()

ReactDOM.render()

ReactDOM.render(element, container[, callback]);
  • render 一个 React 元素到提供的 container 的 DOM 中,并返回对组件的引用(或者返回 null 对于无状态组件(stateless components))
  • 如果 React 元素被事先 render 到了 container 中,那么这将对其执行更新,并且只在需要时改变 DOM 以反映最新的 React 元素。
  • 如果提供了可选 callback,它将会在组件 render 或者 update 之后被调用

JSX -> JavaScript extension

JSX 是一种 JavaScript 的语法扩展,JSX 代表 Object。在编译之后 JSX 会被转化为普通的 JavaScript 对象Babel 转译器(babel online)会把 JSX 转换成 React.createElement() 来调用。JSX 就是用 HTML 的形式来写 JavaScript。使用:

  1. 在 JSX 中 JavaScript 表达式 要包含在大括号里
  2. 需要在 JSX 代码外面扩上一个小括号
  3. 使用引号定义以字符串为值的属性,也可以使用大括号来定义以 JavaScript 表达式为值的属性,切记你使用了大括号包裹的 JavaScript 表达式时就不要再到外面套引号了,JSX 会将引号当中的内容识别为字符串而不是表达式
  4. JSX 标签是闭合的,可以使用 />来闭合,并且可以相互嵌套
  5. 在 JSX 中使用小驼峰命名法来定义属性名称,而不是 HTML 属性名称

上述 demo 使用 JSX 书写在线运行

JSX 书写

React fragment

React.fragment 组件允许在 render 方法中返回多个元素,而不会创建额外的 DOM 元素

render() {
  return (
    <React.Fragment>
      Some text.
      <h2>A heading</h2>
    </React.Fragment>
  );
}

stateless components

虚拟 DOM

demo

虚拟 DOM
在这个 demo 中,span 便是虚拟 DOM虚拟 DOM 就是一个表示 DOM 节点的对象。是非真实的 DOM,一般用对象来表示。

相关文章

  • React Native初探(三)- Mac

    在React Native初探(一) - Mac和React Native初探(二)- Mac中,很简陋但是能用的...

  • React 初探

    原文地址 React 初探 [1.React 简单介绍](https://github.com/laispace/...

  • 探索React源码:Reconciler

    在探索React源码:初探React fiber[https://juejin.cn/post/703562827...

  • (React启蒙)初探React

    初探React 本文翻译自Cody Lindley的《React Enlightenmen》,已获得作者授权,这套...

  • 2018-05-23

    Lottie Android 初探 Lottie是一个支持Android、iOS、React Native,并由 ...

  • Lottie Android 初探

    Lottie Android 初探 Lottie是一个支持Android、iOS、React Native,并由 ...

  • React Native 相关

    React Native 初探 https://www.cnblogs.com/yexiaochai/p/6042...

  • React 初探(一)

    最近刚刚做完一个移动端的 React 的项目,想把其中的一些问题记录一下。 整体结构 学习 React 上手一个项...

  • React初探(一)

    创建项目并配置eslint 1.全局下载安装create-react-app脚手架 npm install cre...

  • umi框架的使用

    介绍umi umi官方文档 初探 对比以往使用的 create-react-app 搭建react项目,根据需要我...

网友评论

      本文标题:React 初探(一)

      本文链接:https://www.haomeiwen.com/subject/upxtrqtx.html