代码之家  ›  专栏  ›  技术社区  ›  Noob

如何在react函数组件中生成html?

  •  0
  • Noob  · 技术社区  · 5 年前

    我试图在react组件内部生成html,但是我不知道如何正确地执行它。这是我的代码:

    import React from 'react'
    
    const Pagination = (props) => {
      let items = []
      for (let i = 0; i <= props.pages; i++) {
        items.push(`<li class="page-item" value=${i} onClick={props.handleClick}><a class="page-link" href="/#">${i}</a></li>`)
      }
      return (
        <nav aria-label="Page navigation example" className='mb-5' style={{ overflowX: 'scroll' }} >
          <ul class="pagination ">
            <li class="page-item">
              <a class="page-link" href="/#" aria-label="Previous">
                <span aria-hidden="true">&laquo;</span>
              </a>
            </li>
    
            {items}
    
            <li class="page-item">
              <a class="page-link" href="/#" aria-label="Next">
                <span aria-hidden="true">&raquo;</span>
              </a>
            </li>
          </ul>
        </nav>
      )
    }
    
    export default Pagination
    

    在这种情况下,它只是将字符串值推送到数组中。有什么办法解决吗?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Guilherme Lemmi MjJ    5 年前

    删除backticks和$,否则这将不会被解释为jsx。

    另外,在使用jsx时,使用属性 className 而不是 class ,以避免与js保留字类混淆。

    import React from 'react'
    
    const Pagination = (props) => {
      let items = []
      for (let i = 0; i <= props.pages; i++) {
        items.push(<li className="page-item" value={i} onClick={props.handleClick}><a className="page-link" href="/#">{i}</a></li>);
      }
      return (
        <nav aria-label="Page navigation example" className='mb-5' style={{ overflowX: 'scroll' }} >
          <ul className="pagination ">
            <li className="page-item">
              <a className="page-link" href="/#" aria-label="Previous">
                <span aria-hidden="true">&laquo;</span>
              </a>
            </li>
    
            {items}
    
            <li className="page-item">
              <a className="page-link" href="/#" aria-label="Next">
                <span aria-hidden="true">&raquo;</span>
              </a>
            </li>
          </ul>
        </nav>
      )
    }
    
    export default Pagination