reactjs - 具有条件渲染和评估值的 jsx 表达式
问题描述
class AddOption extends React.Component{
constructor(props){
super(props)
this.handleAddOption = this.handleAddOption.bind(this)
this.state = {
error: ''
}
}
handleAddOption(e){
e.preventDefault()
const option = e.target.textinput.value;
// THE FOLLOWING LINE TAKES MY OPTION AND PASSED THROUGH A METHOD
//COMMIG FROM PARENT IT VALUATES AND RETURNS THE RESULT
const error = this.props.handleAddOption(option);
this.setState(()=>({error}))
{!this.state.error && e.target.textinput.value =''}
}
render(){
return (
<div>
{this.state.error && <p>{this.state.error}</p>}
<form onSubmit={this.handleAddOption}>
<label>textinput:</label>
<input type="text" name="textinput"/>
<button>Add Options</button>
</form>
</div>
)
}
1) 在提交我的表单时调用我的 handleAddOption 的以下代码收到以下错误,这是预期的
2)我知道我可以使用
if(this.state.error){
e.target.textinput.value = ''
}
3)但我想知道为什么它失败了?
4) 根据 jsx,我们可以在 {} 中保留任何 javascript 表达式,所以我使用赋值表达式作为表达式的第二个参数
5)我想它会编译成{true && expression}
,我错过了什么以及为什么 {!this.state.error && e.target.textinput.value = ''}
失败
6) {!this.state.error && {e.target.textinput.value = ''}}
仍然显示错误
解决方案
推荐阅读
- javascript - 函数意外返回未定义
- reporting-services - SSRS 2008 是否支持分页符/页面名称?
- python-2.7 - 在 web2py 中使用 python 从 textarea 发送消息到确定的电子邮件地址
- java - 为什么我的 showMessageDialog 显示两次?
- c - windows - plain shared memory between 2 processes (no file mapping, no pipe, no other extra)
- java - 通用类 toString 操作
- python - WiringPi ODROID C2 Python 读取模拟输入
- bash - 展开执行另一个别名的别名(嵌套别名)
- jakarta-ee - Websocket 连接建立错误:net::ERR_CONNECTION_REFUSED 'wss://'
- python - Flask-SQlAlchemy Query 在生产和开发配置之间不一致