Как получить значения, которые находятся в TextInput при нажатии кнопки на ReactNative
1. index.android.js
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
ScrollView,
TextInput,
View ,
} from 'react-native';
var styles = require('./Style/customStyle');
import Button from 'react-native-button';
import RadioButton from 'react-native-radio-button'
class AwesomeProject extends Component {
constructor(props){
super(props)
this.state = {
username: '',
password: '',
}
}
render() {
return (
<ScrollView style={styles.content}>
<View style={styles.content}>
<Text style={styles.welcome}>
Create Account
</Text>
<Text style={styles.textStyle}>
Name
</Text>
<TextInput
style={styles.textInputStyle}
placeholder="Enter Name"
returnKeyLabel = {"next"}
onChangeText={(text) => this.setState({text})}
/>
<Button style={styles.buttonStyle}>
Submit
</Button>
</View>
</ScrollView>
);
}
}
AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);
Ответы
Ответ 1
Сначала вы должны запасти свои данные в состоянии.
пример:
<TextInput
style={styles.textInputStyle}
placeholder="Enter Name"
returnKeyLabel = {"next"}
onChangeText={(text) => this.setState({text})}
/>
Затем вы должны передать функцию, которая будет выполняться при нажатии на кнопку следующим образом:
<Button
onPress={() => function }>
Восстановите свое значение с помощью: this.state.key
пример:
class AwesomeProject extends Component {
constructor(props){
super(props)
this.state = {
username: '',
password: '',
}
}
_handlePress() {
console.log(this.state.username);
console.log(this.state.password);
}
render() {
return (
<ScrollView style={styles.content}>
<View style={styles.content}>
<Text style={styles.welcome}>
Create Account
</Text>
<Text style={styles.textStyle}>
Name
</Text>
<TextInput
style={styles.textInputStyle}
placeholder="Enter Name"
returnKeyLabel = {"next"}
onChangeText={(text) => this.setState({username:text})}
/>
<Text style={styles.textStyle}>
Name
</Text>
<TextInput
style={styles.textInputStyle}
placeholder="Enter Name"
returnKeyLabel = {"next"}
onChangeText={(text) => this.setState({password:text})}
/>
<Button
onPress={() => this._handlePress()}
style={styles.buttonStyle}>
Submit
</Button>
</View>
</ScrollView>
);
}
}
Я не тестировал этот код, но он должен работать
Ответ 2
Пожалуйста, ознакомьтесь с приведенным ниже примером:
Настройка состояния в конструкторе
constructor(){
super();
this.state = {isLoggedIn : false, email :"", password : ""};
}
метод render, вызываемый при загрузке страницы:
render() {
return (
<View style={styles.container}>
<TextInput style={styles.input}
placeholder = "Username"
returnKeyType = "next"
underlineColorAndroid='transparent'
onChange = {(text) => this.setState({email : text})}
/>
<TextInput style={styles.input}
secureTextEntry
returnKeyType= 'go'
onChange = {(password) => this.setState({password : password})}
вызывать onChange и setState с именем пользователя и паролем
this.setState({пароль: пароль})}
placeholder = "password"/>
<TouchableOpacity style={styles.clickContainer} onPress=
{this.login.bind(this)}>
<Text style={styles.buttonText} >Login</Text>
</TouchableOpacity>
</View>
);
}
Способ входа в систему: введите введенное имя пользователя и пароль.
login(){
console.log(this.state.email);
this.setState({isLoggedIn : true});
}
Ответ 3
Вы можете получить значение из состояния ie this.state.username
.
<Button
style={styles.textInputStyle}
onPress={() => console.log(this.state.username)}>
Submit
</Button>
Ответ 4
В вашем штате у вас есть имя пользователя и пароль, а в вашем рендере() вы запрашиваете имя. Если вы хотите имя, вы должны поместить его в состояние.
this.state = {
username: '',
password: '',
name: ''
}
Если вы хотите получить имя пользователя и пароль,
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
ScrollView,
TextInput,
View ,
} from 'react-native';
var styles = require('./Style/customStyle');
import Button from 'react-native-button';
import RadioButton from 'react-native-radio-button'
class AwesomeProject extends Component {
constructor(props){
super(props)
this.state = {
username: '',
password: '',
}
}
onUsernameChange(username) {
let s = this.state;
s.username = username;
this.setState(s);
}
onPasswordChange(password) {
let s = this.state;
s.password = password;
this.setState(s);
}
render() {
return (
<ScrollView style={styles.content}>
<View style={styles.content}>
<Text style={styles.welcome}>
Create Account
</Text>
<Text style={styles.textStyle}>
Name
</Text>
<TextInput
style={styles.textInputStyle}
placeholder="Enter Username"
returnKeyLabel = {"next"}
onChangeText={this.onUsernameChange}
/>
<TextInput
style={styles.textInputStyle}
placeholder="Enter Password"
returnKeyLabel = {"next"}
onChangeText={this.onPasswordChange}
/>
<Button style={styles.buttonStyle}>
Submit
</Button>
</View>
</ScrollView>
);
}
}
AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);
Ответ 5
<TextInput editable={true} style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text1) => this.setState({text1})}
value={this.state.text1} />
<Button
onPress={()=>Alert.alert(this.state.text1)}
title="Press Me"
color="#841584"
/>
Это сделает это ребята.