React一些语法

191 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第5天

React一些语法

JSX语法糖

JSX是JS的语法扩展,运用在React框架中,格式很像模板语言,但实际上完全是javascript内部实现。 【语法糖】:也就是糖衣语法,由英国计算机科学家彼得·约翰·兰达发明的术语,指计算机语言中添加某种语法,语法对语言本身没有任何影响,这样更方便程序使用;通常使用语法糖能够增加程序的可读性,减少程序代码出错的机会。

一些函数名称的改变

由于js与jsx中相当于xml语法之间的冲突,因此xml中一些属性名需要为js中的函数名做出让步

  • for -> htmlFor
  • class -> className
  • style= -> style={{}} 双花括号原因:里面写js第一层花括号必加的,第二个花括号其实是里面的内容是对象的原因

JSX必须被一个根元素包括起来或者被

<>
    code
</>

2.注释问题:

{/* */}
/*本质上理解就是花括号代表内部是js代码,里面的部分代表注释内容*/

三元运算符

在style里可以使用三元运算符进行选择性显示

<div style={{backgroundColor : flag ? 'pink' : 'blue'}}>
</div>

循环演示

<ul>
    {
        // react中的列表循环有且只有map可以使用
        // 只有map才有返回值,forEach没有,forEach方法不能返回执行结果,而是undefined
        arr.map((item, index)=>{
            return <li key={index}>{item}</li>
        })
    }
</ul>

代码的简写

如果只返回一行代码的时候,可以直接在=>箭头函数后面加上返回的代码,return就可以简写忽略掉

累加与setState

import React, { Component } from 'react'

let num = 1;

export default class App2 extends Component {
  render() {
    return (
        <div>
            <div>数字为:{num}</div>
            <button onClick={()=>num++}></button>
        </div>
    )
  }
}

// wx小程序中
// this.data.num = xxx;
// 是不能够触发视图的更新的
// 只有this.setData()才能触发视图的更新

因此出现了state: state -> setState data -> setData

import React, { Component } from 'react'

export default class App2 extends Component {
    state = {
        num: 1
    }
  
    render() {
    return (
        <div>
            <div>数字为:{this.state.num}</div>
            <button onClick={() => this.setState({num: this.state.num+1})}></button>
        </div>
    )
  }
}

通过上面的代码就可以实现点击按钮进行数据累加