如何在没有变量的情况下使用 React.js refs?
How can I make use of React.js refs without a variable?
给出了一个简单登录表单的源代码,请参见下文。你看我想在单击表单的提交按钮时使用 username
文本字段的值。因为我需要引用实际的 DOM 节点来检索值,所以我将 usernameElement 变量设置为该节点。
const Login = ({ onLogin }) => {
let usernameElement
const handleSubmit = event => {
event.preventDefault()
onLogin(usernameElement.value)
}
return <form onSubmit={handleSubmit}>
<input
type="text"
name="username"
ref={node => { usernameElement = node }}
/>
<button type="submit">Login</button>
</form>
}
那么,我将如何采用函数式方法解决该问题,或者干脆摆脱 let
变量?
显然,正确的做法是利用组件的状态,这意味着您需要一个有状态组件而不是无状态组件。
// untested
class Login extends Component {
state = { username: '' }
handleChange = event => {
this.setState({ username: event.target.value })
}
handleSubmit = event => {
event.preventDefault()
this.props.onLogin(this.state.username)
}
render = () =>
<form onSubmit={this.handleSubmit}>
<input
type="text"
name="username"
value={this.state.username}
onChange={this.handleChange}
/>
<button type="submit">Login</button>
</form>
}
使用这个,用户名总是绑定到 this.state.username
。 handleSubmit 方法可以只使用组件状态中的用户名。
有关详细信息,请参阅此页面:https://facebook.github.io/react/docs/forms.html
给出了一个简单登录表单的源代码,请参见下文。你看我想在单击表单的提交按钮时使用 username
文本字段的值。因为我需要引用实际的 DOM 节点来检索值,所以我将 usernameElement 变量设置为该节点。
const Login = ({ onLogin }) => {
let usernameElement
const handleSubmit = event => {
event.preventDefault()
onLogin(usernameElement.value)
}
return <form onSubmit={handleSubmit}>
<input
type="text"
name="username"
ref={node => { usernameElement = node }}
/>
<button type="submit">Login</button>
</form>
}
那么,我将如何采用函数式方法解决该问题,或者干脆摆脱 let
变量?
显然,正确的做法是利用组件的状态,这意味着您需要一个有状态组件而不是无状态组件。
// untested
class Login extends Component {
state = { username: '' }
handleChange = event => {
this.setState({ username: event.target.value })
}
handleSubmit = event => {
event.preventDefault()
this.props.onLogin(this.state.username)
}
render = () =>
<form onSubmit={this.handleSubmit}>
<input
type="text"
name="username"
value={this.state.username}
onChange={this.handleChange}
/>
<button type="submit">Login</button>
</form>
}
使用这个,用户名总是绑定到 this.state.username
。 handleSubmit 方法可以只使用组件状态中的用户名。
有关详细信息,请参阅此页面:https://facebook.github.io/react/docs/forms.html