如何使用写三元运算符在React.js中的点击事件

我在我的应用程序中使用了几个三元运算符,但我无法弄清楚如何在点击事件中使用三元运算符。如何使用写三元运算符在React.js中的点击事件

我在做的是一个弹出菜单。一旦该菜单项已被选择,其中一个菜单项将不可点击。只有另一个菜单项应该是可点击的。

图片

我尝试下面的代码,但没有奏效。我们不能在React中使用三元运算符来进行点击事件吗?

<p id="menuItem" {!this.sate.priceBar? onClick={this.clickHandle} : "" } style={!this.state.priceBar? { color:'white'} : {color : '#BBBBBB'} }>{!this.state.priceBar? "Spent Last 14 Days" : "Spent Last 14 Days"}</p> 

完整代码

class Home extends React.Component{ 

constructor(props){

super(props);

this.state = {

slideOpen : false,

priceBar: false,

open: false,

}

this.handleClick = this.handleClick.bind(this);

this.clickHandle = this.clickHandle.bind(this);

}

handleClick() {

this.setState({

slideOpen : !this.state.slideOpen

})

console.log("slideOpen" + !this.state.slideOpen)

}

clickHandle() {

this.setState({

priceBar : !this.state.priceBar,

open: false

})

console.log(!this.state.priceBar)

}

handleTouchTap = (event) => {

// This prevents ghost click.

event.preventDefault();

this.setState({

open: true,

anchorEl: event.currentTarget,

});

};

handleRequestClose =() => {

this.setState({

open: false,

});

};

render(){

const PaymentPanel = this.state.slideOpen? "slideOpen" : "";

const Dropdown = this.state.open? "show" : "";

return(

<div>

<div id="PaymentPanel" className={PaymentPanel} >

<div id="PaymentTitle" >{!this.state.priceBar? "Spent Last 14 Days" : "Spent Last 30 Days"}<img src={PaymentArrow} className="PaymentArrow PaymentToggle" onClick={this.handleTouchTap}/></div>

<div id="Dropdown" className={Dropdown} open={this.state.open}>

<p className="popoverToggle" onClick={this.handleRequestClose}> </p>

<p id="menuItem" onClick={this.clickHandle} style={!this.state.priceBar? { color:'white'} : {color : '#BBBBBB'} }>{!this.state.priceBar? "Spent Last 14 Days" : "Spent Last 14 Days"}</p>

<p id="menuItem" onClick={this.clickHandle} style={this.state.priceBar? { color:'white'} : {color : '#BBBBBB'} }>{this.state.priceBar? "Spent Last 30 Days" : "Spent Last 30 Days"}</p>

</div>

<h2 id="paymentSum" className={!this.state.open? "" : "close"}>{!this.state.priceBar? "$9,964.55" : "$19,929.1"}</h2>

<ul className="paymentTool">

<li>

<div onClick={this.handleTouchTap} className="tool">VISA <br /> {!this.state.priceBar? "$9,504.13" : "$19,008.26"}</div></li>

<li><div className="tool">MasterCard <br /> {!this.state.priceBar? "$490.64" : "$981.28"}</div></li>

<li><div className="tool">PayPal <br /> {!this.state.priceBar? "$824.52" : "$1,649.04"}</div></li>

</ul>

<div className="paymentSlide" onClick={this.handleClick}>{this.state.slideOpen? <img src={Arrowup} alt="arrowup" className="arrowup" /> : <img src={Arrowdown} alt="arrowdown" className="arrowdown"/>}</div>

</div>

<div className="PaymentTable" >

<PaymentTable />

<ul>

</ul>

</div>

</div>

)

}

}

回答:

当然,三元操作不能用于返回DOM的属性,因为表达的返回值是一个字符串,浏览器和react.js引擎不会将字符串视为属性。

相反:

onClick={!this.state.priceBar ? this.clickHandle : ''} 

修改代码:

handleTouchTap(event){ 

}

handleRequestClose() {

}

class Home extends React.Component{  

constructor(props){

super(props);

this.state = {

slideOpen : false,

priceBar: false,

open: false,

}

this.handleClick = this.handleClick.bind(this);

this.clickHandle = this.clickHandle.bind(this);

}

handleClick() {

this.setState({

slideOpen : !this.state.slideOpen

})

console.log("slideOpen" + !this.state.slideOpen)

}

clickHandle() {

this.setState({

priceBar : !this.state.priceBar,

open: false

})

console.log(!this.state.priceBar)

}

handleTouchTap (event) {

// This prevents ghost click.

event.preventDefault();

this.setState({

open: true,

anchorEl: event.currentTarget,

});

}

handleRequestClose() {

this.setState({

open: false,

});

}

render(){

const PaymentPanel = this.state.slideOpen? "slideOpen" : "";

const Dropdown = this.state.open? "show" : "";

return(

<div>

<div id="PaymentPanel" className={PaymentPanel} >

<div id="PaymentTitle" >{!this.state.priceBar? "Spent Last 14 Days" : "Spent Last 30 Days"}</div>

<p id="menuItem" onClick={this.clickHandle} style={!this.state.priceBar? { color:'white'} : {color : '#BBBBBB'} }>{!this.state.priceBar? "Spent Last 14 Days" : "Spent Last 14 Days"} (Click me!)</p>

click top line

</div>

</div>

)

}

}

ReactDOM.render(<Home />, document.querySelector('.app'))

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>  

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div class="app"></div>

回答:

<p id="menuItem" onClick={!this.state.priceBar ? this.clickHandle : null}> 

以上是 如何使用写三元运算符在React.js中的点击事件 的全部内容, 来源链接: utcz.com/qa/266359.html

回到顶部