我试图从react中的函数动态返回一个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>
)
}
}
当您通过函数呈现div时,div的意图和位置很重要。
renderDiv() {
return (<div>
</div>)
}
可以但不能
renderDiv() {
return
(<div>
</div>)
}
调用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>
)
}
}