gpt4 book ai didi

react-native - react native 获取 TextInput 值

转载 作者:行者123 更新时间:2023-12-03 06:17:14 26 4
gpt4 key购买 nike

我遇到了一个非常简单的问题。我有包含用户名、密码和按钮的登录表单。在我的按钮处理程序中,我尝试获取文本输入值。但总是得到未定义的值。我错过了什么吗?

render() {
<ExScreen
headerColor={this.state.headerColor}
scrollEnabled={this.state.enableScroll}
style={styles.container} >
<View >
<View >
<View style={[styles.inputContainer]} >
<TextInput
ref= "username"
onChangeText={(text) => this.setState({text})}
value={this.state.username}
/>
</View>
<Button style={{color: 'white', marginTop: 30, borderWidth: 1, borderColor: 'white', marginLeft: 20*vw, marginRight: 20*vw, height: 40, padding: 10}}
onPress={this._handlePress.bind(this)}>
Sign In
</Button>
...
_handlePress(event) {
var username=this.refs.username.value;

最佳答案

快速且不太优化的方法是在 onChangeText 回调中使用箭头函数,将 username 作为 onChangeText 回调中的参数传递。

<TextInput
ref= {(el) => { this.username = el; }}
onChangeText={(username) => this.setState({username})}
value={this.state.username}
/>

然后在您的_handlePress方法中

_handlePress(event) {
let username=this.state.username;
}
<小时/>

但这有几个缺点!!!

  1. 在此组件的每次渲染中都会创建一个新的箭头函数。
  2. 如果子组件是 PureComponent,它将强制不必要地重新渲染,这会导致巨大的性能问题,尤其是在处理大型列表、表格或大量迭代的组件时。 More on this in React Docs

最佳实践是使用像 handleInputChange 这样的处理程序,并在构造函数中绑定(bind)“this”。

...
constructor(props) {
super(props);
this.handleChange= this.handleChange.bind(this);
}

...
handleChange(event = {}) {
const name = event.target && event.target.name;
const value = event.target && event.target.value;

this.setState([name]: value);
}
...

render() {
...
<TextInput
name="username"
onChangeText={this.handleChange}
value={this.state.username}
/>
...
}

...
<小时/>

或者,如果您使用 es6 类属性简写,它会自动绑定(bind) this。但这在测试和性能方面有缺点。 Read More Here

...
handleChange= (event = {}) => {
const name = event.target && event.target.name;
const value = event.target && event.target.value;

this.setState([name]: value);
}
...

render() {
...
<TextInput
name="username"
onChangeText={this.handleChange}
value={this.state.username}
/>
...
}

...

关于react-native - react native 获取 TextInput 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com