ReactJS单选按钮
根据所选单选按钮呈现信息时遇到问题。当点击“是”按钮时,应该出现“欢迎用户”。选择“否”时,应显示“请登录” 我在美国也遇到了麻烦。当我最初单击按钮时,console按钮将我的状态显示为空白。然后,当我单击“否”时,状态更新为“是”,反之亦然。不知道这里发生了什么ReactJS单选按钮,reactjs,radio-button,Reactjs,Radio Button,根据所选单选按钮呈现信息时遇到问题。当点击“是”按钮时,应该出现“欢迎用户”。选择“否”时,应显示“请登录” 我在美国也遇到了麻烦。当我最初单击按钮时,console按钮将我的状态显示为空白。然后,当我单击“否”时,状态更新为“是”,反之亦然。不知道这里发生了什么 render() { return ( <form onSubmit={this.onFormSubmit}> <p>Did you go to the lecture?</p
render() {
return (
<form onSubmit={this.onFormSubmit}>
<p>Did you go to the lecture?</p>
<label>
<input
type="radio"
value="No"
checked={this.state.goToLectue === 'No'}
onChange={this.handleChange}
/>
No
</label>
<label>
<input
type="radio"
value= "Yes"
checked={this.state.goToLectue === 'Yes'}
onChange={this.handleChange}
/>
Yes
</label>
<div>
<Response goToLecture = {this.state.goToLectue}/>
</div>
);
}
onFormSubmit = e => {
e.preventDefault();
console.log('Chosen: ' + this.state.goToLectue);
};
handleChange = e => {
this.setState({
goToLectue: e.target.value
});
console.log('value of goToLectue onchange: ' + this.state.goToLectue);
}
render(){
返回(
你去听讲座了吗
不
对
);
}
onFormSubmit=e=>{
e、 预防默认值();
console.log('selected:'+this.state.goToLectue);
};
handleChange=e=>{
这是我的国家({
goToLectue:e.target.value
});
log('goToLectue onchange的值:'+this.state.goToLectue);
}
组件外部功能
function Response(props) {
if (props.goToLectue)
return <h1>Welcome User</h1>;
else
return <h1>Please Login</h1>;
}
函数响应(props){
如果(道具goToLectue)
还欢迎用户;
其他的
返回请登录;
}
我发现您的代码中存在两个问题:
1) 响应组件在其props.goToLectue
属性中需要一个布尔值,但您正在向其传递一个字符串(“Yes”或“No”)。要么将主组件的state.goToLectue
更改为布尔值,要么执行类似于
的操作
2) 在您的handleChange
方法中,您正在记录this.state.goToLectue
-此值已过时,您不会立即看到setState
调用的效果,只能在下一次render()
调用中看到。您应该改为记录e.target.value
希望能有所帮助。我可以看到一些问题 我已经在代码笔中为您更正了它们:
Response
中,如果正在传递语句,则props.goToLecture
只能是“Yes”或“No”,这两个字符串将解析为truthy。我添加了==“Yes”
以更正此问题。未来的提示是尽可能地坚持使用布尔值,因为它使条件语句更加整洁
讲座
和演讲
似乎不匹配。我猜后者是个打字错误
标记丢失它的
undefined
,允许您选择在单击单选按钮之前不显示“响应”希望这有帮助 别担心,我们都是!