您当前的位置:首页 > 网站建设 > React
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

ReactDOM.render 是 React 的最基本方法

51自学网 2020-03-11 09:13:38
  React
一、ReactDOM.render
ReactDOM.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。

ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('root')
);

HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写

JSX 的基本语法规则:遇到 HTML 标签(以 < 开头),就用 HTML 规则解析;遇到代码块(以 { 开头),就用 JavaScript 规则解析。

ReactDOM.render 功能就是把组件渲染并且构造 DOM 树,然后插入到页面上某个特定的元素上(在这里是 id 为 root 的 div 元素)。

关于JSX,记住:

1. JSX 是 JavaScript 语言的一种语法扩展,长得像 HTML,但并不是 HTML。

2. React.js 可以用 JSX 来描述你的组件长什么样的。

3. JSX 在编译的时候会变成相应的 JavaScript 对象描述。

4. react-dom 负责把这个用来描述 UI 信息的 JavaScript 对象变成 DOM 元素,并且渲染到页面上。

例如:下面是JS部分的代码

import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import './index.css'

class Header extends Component {
  render () {
    return (
      <div>
        <h1>hello Armor</h1>
      </div>
    )
  }
}

ReactDOM.render(
  <Header />,
  document.getElementById('root')
)

在上面这个示例中,需要一个HTML部分,只用给div中添加相应的id,

<div id='root'>
</div>

然后在JS代码里面,定义一个Header继承Component类,用render方法返回一段HTML,这段HTML写入ReactDOM.render 中即可插入到id为’root’的html上进行渲染

二、表达式插入
用花括号{}可以插入javascript的表达式、函数、变量、表达式计算、函数执行等,render 会把这些代码返回的内容如实地渲染到页面上,也可以用在标签的属性上,例如:className={className}

注意:直接使用 class 在 React.js 的元素上添加类名如 <div class=“xxx”> 这种方式是不合法的。因为 class 是 JavaScript 的关键字,所以 React.js 中定义了一种新的方式:className 来帮助我们给元素添加类名。

还有一个特例就是 for 属性,例如 <label for='male'>Male</label>,因为 for 也是 JavaScript 的关键字,所以在 JSX 用 htmlFor 替代,即 <label htmlFor='male'>Male</label>。
而其他的 HTML 属性例如 style 、data-* 等就可以像普通的 HTML 属性那样直接添加上去。

三、事件监听
给需要监听事件的元素加上属性类似于 onClick、onKeyDown 这样的属性,定义点击事件,onClick 紧跟着是一个表达式插入值

class Title extends Component {
    handleClickOnTitle () {
        console.log('Click on title')
    }
    render () {
        return (
            <h1 onClick={this.handleClickOnTitle}>react</h1>
            )
    }
}

ReactDOM.render(
    <Title/>,
    document.getElementById('root')
)

如果你想在事件函数当中使用当前的实例,你需要手动地将实例方法 bind 到当前实例上再传入给 React.js。

四、组件的state和setState
class LikeButton extends Component {
    constructor () {
        super ()
        this.state = { isLiked: false}
    }
    handleClickOnLikeButton () {
        this.setState({
            isLiked: !this.state.isLiked
        })
    }
    render () {
        return (
            <button onClick={this.handleClickOnLikeButton.bind(this)}>
                {this.state.isLiked ? '取消' : '点赞'}hhh
            </button>
        )
    }
}

class Index extends Component {
    render () {
        return (
            <div>
                <LikeButton/>
            </div>
        )
    }
}

ReactDOM.render(
    <Index/>,
    document.getElementById('root')
)

setState 方法由父类 Component 所提供。当我们调用这个函数的时候,React.js 会更新组件的状态 state ,并且重新调用 render 方法,然后再把 render 方法所渲染的最新的内容显示到页面上。

注意,当我们要改变组件的状态的时候,不能直接用 this.state = xxx 这种方式来修改,如果这样做 React.js 就没办法知道你修改了组件的状态,它也就没有办法更新页面。所以,一定要使用 React.js 提供的 setState 方法,它接受一个对象或者函数作为参数。
————————————————
版权声明:本文为CSDN博主「ArmorVon」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CystalVon/article/details/74207971
下载地址:
React从零开始——一个详细的范例
React中如何解决调用调用一个接口依赖于另一个接口返回值的情况
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1