【发布时间】:2017-05-02 00:46:02
【问题描述】:
我正在阅读Full Stack React The Complete Guide 并遇到了这段代码sn-p:
render() {
if(this.props.timerIsRunning){
return(
<div
className='ui bottom attached red basic button'
onClick={this.props.onStopClick}
>
Stop
</div>
)
} else {
return(
<div
className='ui bottom attached green basic button'
onClick={this.props.onStartClick}
>
Start
</div>
)
}
}
它使用 if 语句来确定组件将呈现什么内容,可以是停止按钮,也可以是秒表的开始按钮。这个例子让我想知道是否有办法使用更少的空间来做到这一点。有没有办法创建 div,然后根据 this.props.timerIsRunning 的值向该 div 添加某些属性和类?如果这不是 JSX,我会提出这样的建议:
<div id=timerbutton></div>
<script>
let timerButtonDiv = document.getElementById(timerbutton)
if(this.props.timerIsRunning) {
timerbuttonDiv.className = 'ui bottom attached red basic
button'
timerbuttonDiv.innerHTML = Stop
} else {
timerbuttonDiv.className = 'ui bottom attached green basic
button'
timerbuttonDiv.innerHTML = Start
}
</script>
所以...让这个例子说明我缺乏对 JSX 的理解,但我想,我只是想知道(来自 Angular 1.X 背景)是否存在相当于 ng-show 或 ng 的 React/JSX -班级。更广泛地说,我想知道就标准 DOM 操作而言,虚拟 DOM 和实际 DOM 之间的界限在哪里。任何关于 React 如何转置 JSX 的资源肯定会有所帮助。
【问题讨论】:
标签: reactjs ecmascript-6 react-jsx jsx