【问题标题】:Return and render a div in React在 React 中返回并渲染一个 div
【发布时间】:2016-09-21 19:14:08
【问题描述】:

我试图从反应中的函数动态返回一个 div。我调用一个函数直接在组件渲染函数中渲染出来,但它没有渲染出来。我确定这是代码中的一个简单错误,但我无法发现它。

代码:

import React, { Component } from 'react'

import ProgressBar from './ProgressBar'

require('styles/_servicesPage/priceCalc.css')

export default class PriceCalculator extends Component {

  componentWillMount() {
    this.state = {
      arr: []
    }
  }

  minimizeDiv() {
    this.props.toggleDiv(false)
  }


  returnDiv(){
    return
      <div>
        <p>
          Printing out text!
        </p>
      </div>
  }

  render() {
    var styleVar = {
      backgroundImage: 'url(assets/images/services/pricecalc_blue_bg.svg)',
      backgroundPosition: 'right center'
    }

    return (
      <div className="service-form" id="priceCalc" style={styleVar}>

        <div>
          <h1>Priskalkyl för badrum</h1>
          <p>
            Välkommen att fylla i formuläret,
            så är du ett steg närmare dina drömmars badrum.
          </p>
        </div>

        {this.returnDiv}

        <div onClick={this.minimizeDiv.bind(this)} className="minimizeBorder">
          <img src="assets/arrows/minimizeArrow.svg"/>
          <p>Minimera</p>
          <img src="assets/arrows/minimizeArrow.svg"/>
        </div>

      </div>
    )
  }
}

【问题讨论】:

  • 你没有调用函数。将{this.returnDiv} 替换为{this.returnDiv()}
  • 我也尝试过使用 {this.returnDiv()}。还尝试了第一种选择。我什至没有在元素检查器中显示!

标签: javascript function reactjs render


【解决方案1】:

当您通过函数渲染 div 时,div 的意图和位置很重要。

renderDiv() {
  return (<div>
          </div>)
}

有效但无效

renderDiv() {
  return 
      (<div>
      </div>)
}

【讨论】:

    【解决方案2】:

    调用returnDiv,同时将返回的多行jsx放在括号内,否则可能返回null;

        import React, { Component } from 'react'
    
        import ProgressBar from './ProgressBar'
    
        require('styles/_servicesPage/priceCalc.css')
    
        export default class PriceCalculator extends Component {
    
          componentWillMount() {
            this.state = {
              arr: []
            }
          }
    
          minimizeDiv() {
            this.props.toggleDiv(false)
          }
    
    
          returnDiv(){
            return (
              <div>
                <p>
                  Printing out text!
                </p>
              </div>
            )
          }
    
          render() {
            var styleVar = {
              backgroundImage: 'url(assets/images/services/pricecalc_blue_bg.svg)',
              backgroundPosition: 'right center'
            }
            var returnDiv = this.returnDiv();
    
            return (
              <div className="service-form" id="priceCalc" style={styleVar}>
    
                <div>
                  <h1>Priskalkyl för badrum</h1>
                  <p>
                    Välkommen att fylla i formuläret,
                    så är du ett steg närmare dina drömmars badrum.
                  </p>
                </div>
    
                {returnDiv}
    
                <div onClick={this.minimizeDiv.bind(this)} className="minimizeBorder">
                  <img src="assets/arrows/minimizeArrow.svg"/>
                  <p>Minimera</p>
                  <img src="assets/arrows/minimizeArrow.svg"/>
                </div>
    
              </div>
            )
          }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多