Javascript React.js:状态更改时显示为未定义的变量
我试图使用state更新一些文本,然后在一段时间后将其恢复。我有一个变量“email”,我从输入框中的值中提取它。文本正在更改,但“email”变量显示为“undefined”。我做错什么了吗Javascript React.js:状态更改时显示为未定义的变量,javascript,reactjs,Javascript,Reactjs,我试图使用state更新一些文本,然后在一段时间后将其恢复。我有一个变量“email”,我从输入框中的值中提取它。文本正在更改,但“email”变量显示为“undefined”。我做错什么了吗 Code: var SignupForm = React.createClass({ getInitialState: function() { return {email: '', submitted: true}; }, render:
Code:
var SignupForm = React.createClass({
getInitialState: function() {
return {email: '', submitted: true};
},
render: function() {
var email = this.state.value;
var text = this.state.submitted ? 'Enter your email to request early access:' : 'Thank you!
Expect a follow up at '+email+'soon!';
return (
<div>
<h1 className="home-two-question">{text}</h1>
<input type="email" className="input_field" ref="email" value={email} />
<a href="#" className="button" onClick={this.saveAndContinue}>Request Invite</a>
</div>
)
},
saveAndContinue: function(e) {
e.preventDefault()
// Get values via this.refs
email = this.refs.email.getDOMNode().value
this.setState({email: email})
this.setState({submitted: !this.state.submitted});
request = $.ajax({
url: "/user",
type: "post", success:function(data){
},
data: {'email': email} ,beforeSend: function(data){console.log(data);}
});
}
});
React.render(<SignupForm/>, document.getElementById('content'));
代码:
var SignupForm=React.createClass({
getInitialState:函数(){
返回{电子邮件:'',已提交:true};
},
render:function(){
var email=this.state.value;
var text=this.state.submitted?“输入您的电子邮件以请求提前访问:”:“谢谢!
期待在“+电子邮件+”上进行跟进;
返回(
{text}
)
},
保存并继续:函数(e){
e、 预防默认值()
//通过this.refs获取值
email=this.refs.email.getDOMNode().value
this.setState({email:email})
this.setState({submitted:!this.state.submitted});
请求=$.ajax({
url:“/user”,
类型:“post”,成功:功能(数据){
},
数据:{'email':email},在发送之前:函数(数据){console.log(数据);}
});
}
});
React.render(,document.getElementById('content'));
您需要添加一种方法,以便在更改时更新搜索字段的值。例如:
var SignupForm = React.createClass({
getInitialState: function() {
return {email: '', submitted: true};
},
_updateInputValue(e) {
this.setState({email: e.target.value});
},
render: function() {
var text = this.state.submitted ? 'Enter your email to request early access:' : 'Thank you! Expect a follow up at '+email+'soon!';
return (
<div>
<h1 className="home-two-question">{text}</h1>
<input type="text" className="input_field" onChange={this._updateInputValue} ref="email" value={this.state.email} />
<a href="#" className="button" onClick={this.saveAndContinue}>Request Invite</a>
</div>
)
},
saveAndContinue: function(e) {
e.preventDefault()
// Get values via this.refs
email = this.refs.email.getDOMNode().value
this.setState({email: email})
this.setState({submitted: !this.state.submitted});
request = $.ajax({
url: "/user",
type: "post", success:function(data){
},
data: {'email': email} ,beforeSend: function(data){console.log(data);}
});
}
});
var SignupForm=React.createClass({
getInitialState:函数(){
返回{电子邮件:'',已提交:true};
},
_更新输入值(e){
this.setState({email:e.target.value});
},
render:function(){
var text=this.state.submitted?“输入您的电子邮件以请求提前访问:”:“谢谢!希望在“+email+”上尽快获得后续信息!”;
返回(
{text}
)
},
保存并继续:函数(e){
e、 预防默认值()
//通过this.refs获取值
email=this.refs.email.getDOMNode().value
this.setState({email:email})
this.setState({submitted:!this.state.submitted});
请求=$.ajax({
url:“/user”,
类型:“post”,成功:功能(数据){
},
数据:{'email':email},在发送之前:函数(数据){console.log(数据);}
});
}
});
注意
\u updateInputValue
和onChange={this.\u updateInputValue}
var email=this.state.value代码>应该是var email=this.state.email代码>当我这样做时,我无法在输入框中键入(文本不显示在输入框中)我不确定它是否有用,但可能不是将值存储在渲染
返回之外的变量中-尝试将状态变量直接放入返回
?在value={this.state.email}
中,我不知道你的意思,你能把它添加到你的答案中吗?