我试图从反应中的函数动态返回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>
)
}
}
答案 0 :(得分:0)
this.returnDiv
只是函数的引用。你没有调用它,这就是为什么它不返回任何东西。这是你可以做的两件事:
让returnDiv
成为一个吸气者,并像使用它一样使用它({this.returnDiv}
):
get returnDiv() {
return (
<div><p>Printing out text!</p></div>
)
}
将returnDiv
称为函数:{this.returnDiv()}
更新:这是一个显示不同选择的小提琴:https://jsfiddle.net/5tsu4df1/。
答案 1 :(得分:0)
调用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>
)
}
}
答案 2 :(得分:0)
当您通过函数渲染div时,div的意图和位置很重要。
renderDiv() {
return (<div>
</div>)
}
工作但不是
renderDiv() {
return
(<div>
</div>)
}