在react中用jsx渲染dom的时候经常会遇到if条件判断,然而在jsx中竟是不允许if条件判断的。

下面我总结了几种判断方式:

方式一:自定义函数中使用if...else...

export default class Life extends React.Component{
	render() {
		let flag = true
		let renderMessage 
		if(flag) {
			renderMessage = (<h1>标题1</h1>)
		} else {
			renderMessage = (<h1>标题2</h1>)
		}
		return (
				<div>
					{ renderMessage }
				</div>
			)
	}
}

方式二:render函数中使用if...else...

export default class Life extends React.Component{
	constructor(props) {
		super(props)
		this.state = {
			flag: true
		}
	}
	renderMessage() {
		if(this.state.flag) {
			return (<h1>标题11</h1>)
		} else {
			return (<h1>标题22</h1>)
		}
	}
	render() {
		
		return (
				<div>
					{ this.renderMessage.bind(this)() }
				</div>
			)
	}
}

方式三:render函数return中使用三元运算符

export default class Life extends React.Component{
	
	render() {
		let flag = true
		return (
				<div>
					{flag ? <h1>标题111</h1> : <h1>标题222</h1>}
				</div>
			)
	}
}

总结:短小的字段判断最好用三元表达式,如果是大块的元素都需要区分,就要利用变量了。

更多推荐

在React中使用if else 条件判断使用