美文网首页
React JSX语法基础

React JSX语法基础

作者: Lia代码猪崽 | 来源:发表于2019-08-06 17:04 被阅读0次

一、注释

写在JSXHTML标签里的注释格式应包裹在{}里,即为:

<div>
{/*注释*/}
</div>

二、类名属性

以下都会用到的CSS文件:/src/assets/css/test.css

.test-class {
    color: red;
}

1.静态类名class

React组件:/src/component/Test.js

import React, {Component} from 'react'
import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            //
        }
    }

    render() {
        return (
            <div className="test-class">测试类名</div>
        )
    }
}
如图所示,样式生效了

2.动态类名--与数据绑定

React组件:/src/component/Test.js

import React, {Component} from 'react'
import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            stateClass: 'test-class'
        }
    }

    render() {
        return (
            <div className={this.state.stateClass}>测试类名</div>
        )
    }
}

千万要注意:
className={this.state.stateClass}不可以习惯性加上双引号"",如className="{this.state.stateClass}"
因为编辑器会误认为双引号""里的都是字符串,那么编译后得到的是<div class="{this.state.stateClass}">测试类名</div>而不是我们想要的<div class="test-class>测试类名</div>"

三、行内样式style

行内样式style的属性名与原来一样,但是写法却不一样了,要写成对象的形式。

1.静态样式style

import React, {Component} from 'react'
import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            stateClass: 'test-class'
        }
    }

    render() {
        const objStyle = {
            color: 'pink'
        }
        return (
            <div>
                <div style={objStyle}>测试类名</div>
                <div style={{'color': 'red'}}>测试类名</div>
            </div>
        )
    }
}

2.动态类名--与数据绑定

import React, {Component} from 'react'
import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            stateClass: 'test-class',
            stateStyle: {
                color: 'red'
            }
        }
    }

    render() {
        const objStyle = {
            color: 'pink'
        }
        return (
            <div>
                <div style={objStyle}>测试类名</div>
                <div style={this.state.stateStyle}>测试类名</div>
            </div>
        )
    }
}
样式style

四、label中的for

要将for改为htmlFor

import React, {Component} from 'react'
// import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            //
        }
    }

    render() {
        return (
            <div>
                <label htmlFor="name">姓名:</label>
                <input id="name"/>
            </div>
        )
    }
}
点姓名文字的时候,input框能选中

五、引入本地图片

有两种方法,ES5的require以及ES6的import

import React, {Component} from 'react'
import '../assets/css/test.css'
import logo from '../logo.svg';

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            //
        }
    }

    render() {
        return (
            <div>
                {/*ES6 import 引入*/}
                <img src={logo} className="img"/>
                {/*ES5 require 引入*/}
                <img src={require('../logo.svg')} className="img"/>
            </div>
        )
    }
}
左边require引入,右边import引入

六、循环数组

1.在render(){}里,return()外循环

import React, {Component} from 'react'
// import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            list: ['1111', '2222', '3333']
        }
    }

    render() {
        const listResult = this.state.list.map((item, key) => {
            return <li key={key}>{item}</li>
        })
        return (
            <div>
                <ul>
                    {listResult}
                </ul>
            </div>
        )
    }
}
如图所示

2.直接循环,用{}包裹住JS代码

import React, {Component} from 'react'
// import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            list: [<h2>我是一个h2</h2>, <h2>我也是一个h2</h2>]
        }
    }

    render() {
        return (
            <div>
                <ul>
                    {
                        this.state.list.map((item, key) => {
                            return <li key={key}>{item}</li>
                        })
                    }
                </ul>
            </div>
        )
    }
}
JSX中支持HTML数组

返回的是多行,用()包裹

import React, {Component} from 'react'
// import '../assets/css/test.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            list: [
                {
                    name: '张三',
                    age: 10
                },
                {
                    name: '李四',
                    age: 11
                }
            ]
        }
    }

    render() {
        return (
            <div>
                <ul>
                    {
                        this.state.list.map((item, key) => {
                            return (
                                <div key={key}>
                                    <h4>我是{item.name}</h4>
                                    <h4>今年{item.age}岁了</h4>
                                </div>
                            )
                        })
                    }
                </ul>
            </div>
        )
    }
}
添加key={key}以免报错

相关文章

  • react语法结构

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

  • React

    (1)React环境搭建的过程 安装地址示例 (2)React 基础 (2.1) es6语法 (2.2) JSX ...

  • react学习(2019/7/30-8/7)

    今日总结 课上提到的内容 1. 讲了react要学习的内容提纲 react 基础,JSX语法,插件 react-r...

  • React基础——JSX语法

    JSX是React的核心组成部分,它使用XML标记的方式去直接声明界面,界面组件之间可以互相嵌套。可以理解为在JS...

  • React JSX语法基础

    一、注释 写在JSX的HTML标签里的注释格式应包裹在{}里,即为: 二、类名属性 以下都会用到的CSS文件:/s...

  • vue 渲染函数&jsx

    jsx react模板渲染语法

  • React 笔记

    JSX React 采用jsx语法,需用bable.js转义. JSX 语法可以和html 混写. html以< ...

  • ReactJS基础学习-01

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

  • react项目简单回顾,thunk与saga中间件

    重新回顾了一下react相关的知识 react简单总结 比如基础语法,JSX,组件化,用styled-compon...

  • (React)认识React语法

    一、JSX语法 在React中,没有使用HTML标签来绘制UI,而是使用了JSX语法。 当然JSX语法中,也可以嵌...

网友评论

      本文标题:React JSX语法基础

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