美文网首页React学习笔记
React进阶笔记7(不使用JSX)

React进阶笔记7(不使用JSX)

作者: XKolento | 来源:发表于2018-08-15 17:13 被阅读0次

不使用jsx

在编写React的时候,jsx并不是必选的,当你不想在你的构建环境中安装相关编译工具的时候,不使用jsx编写React反而会比较方便。

每一个jsx元素都只是React.createElement(component,props,...children)的语法糖。

因此任何时候你写的jsx语法都可以使用js写出来。

比如下面这段代码是使用jsx实现的:

class Hello extends React.Component{
    render(){
        return <div>hello {this.props.toWhat}</div>
    }
}

ReactDOM.render(
    <Hello toWhat="world" />,document.getElementById('root')
)

以上的代码可以编译为以下不使用jsx的代码

class Hello extends React.Component{
    render(){
        return React.createElement(
            'div',
            null,
            `hello, ${this.props.toWhat}`
        )
    }
}

ReactDOM.render(
    React.createElement(
        Hello,{toWhat:'world!!!'},null
    ),
    document.getElementById('root')
)

简单的demo展示jsx与js之间的转换:

function hello() {
  return <div class="test">Hello world!</div>;
}

function world(){
    return <p id="test2" userid="123">react</p>
}

以上的2个组件转化后:

"use strict";

function hello() {
  return React.createElement(
    "div",
    { "class": "test" },
    "Hello world!"
  );
}

function world() {
  return React.createElement(
    "p",
    { id: "test2", userid: "123" },
    "react"
  );
}

如果你很好奇想了解更多关于JSX如何被转化为 JavaScript 的例子,你可以尝试下这个在线Babel编译器

一个组件可以是一个字符串,或者也是可以是React.Component的子类,当组件是无状态组件的时候,他可以是一个函数。

如果你对每次都要输入React.createElement()感到非常厌烦的话,以下是一种常用的简写方式。
等于就是变量替换。

const e = React.createElement;
ReactDOM.render(
    e('div',null,'hello world'),
    document.getElementById('root')
)

如果你使用React.createElement的简写形式,这样会很方便去编写不使用JSX的React应用。

其他选择的话,你可以去参考社区上的项目例如react-hyperscripthyperscript-helpers。它们都提供了一些简洁的语法。

相关文章

  • React进阶笔记7(不使用JSX)

    不使用jsx 在编写React的时候,jsx并不是必选的,当你不想在你的构建环境中安装相关编译工具的时候,不使用j...

  • react 学习笔记 使用 jsx 语法

    react 学习笔记 使用 jsx 语法 概念 JSX 是一种 JavaScript 的语法拓展。我们推荐 rea...

  • React.js(二)

    React JSX### React 使用 JSX 来替代常规的 JavaScript。JSX 是一个看起来很像 ...

  • ReactJS基础学习-01

    React JSX语法 React 使用 JSX 来替代常规的 JavaScript。 JSX 是一个看起来很像 ...

  • learn-react之基础

    JSX tip:使用jsx必须引用react 解决方案

  • React JS 学习(二)

    JSX 虽然 JSX 不是 React 必须使用的, 但是它是 React 推荐使用的, 因为它可以定义简洁且我们...

  • react语法结构

    1.react JSX语法原理 react是函数式编程,使用jsx语法来渲染组件。jsx语法是合法的JavaScr...

  • React 高级指导 笔记

    深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...

  • React 学习笔记

    React 笔记 一、JSX 语法 疑难点class => classNamefor...

  • 005@关于JSX语法.md

    005@关于JSX语法 转(有所更改):React入门:关于JSX语法可以参考的资料:React.js学习笔记之J...

网友评论

    本文标题:React进阶笔记7(不使用JSX)

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