组件的数据渲染

1. 条件渲染

      {
        condition ? '❤️取消' : '🖤收藏'
      }

      { condition && '取消'||'收藏' }

2. 列表渲染


    // 数据
    const people = [{
      id: 1,
      name: 'Leo',
      age: 35
    }, {
      id: 2,
      name: 'XiaoMing',
      age: 16
    }]
    // 渲染列表
    {
      people.map(person => {
        return (
          <dl key={person.id}>
            <dt>{person.name}</dt>
            <dd>age: {person.age}</dd>
          </dl>
        )
      })
    }

React的高效依赖于所谓的 Virtual-DOM,尽量不碰 DOM。对于列表元素来说会有一个问题:元素可能会在一个列表中改变位置。要实现这个操作,只需要交换一下 DOM 位置就行了,但是React并不知道其实我们只是改变了元素的位置,所以它会重新渲染后面两个元素(再执行 Virtual-DOM ),这样会大大增加 DOM 操作。但如果给每个元素加上唯一的标识,React 就可以知道这两个元素只是交换了位置,这个标识就是key,这个 key 必须是每个元素唯一的标识

3. dangerouslySetInnerHTML

对于富文本创建的内容,后台拿到的数据是这样的:

content = "<p>React.js是一个构建UI的库</p>"

处于安全的原因,React当中所有表达式的内容会被转义,如果直接输入,标签会被当成文本。这时候就需要使用dangerouslySetHTML属性,它允许我们动态设置innerHTML


    import React, { Component } from 'react'
    import ReactDOM from 'react-dom'

    class App extends Component {
      constructor() {
        super()
        this.state = {
          content : "<p>React.js是一个构建UI的库</p>"
        }
      }
      render () {
          const html = {
              __html: this.state.content 
          }
        return (
              <div
                // 注意这里是两个下下划线 __html
                dangerouslySetInnerHTML={ html }
           />
          )
      }
    }
    ReactDOM.render(
        <App/>,
      document.getElementById('root')
    )

results matching ""

    No results matching ""