【发布时间】:2016-12-09 05:05:05
【问题描述】:
我正在编写一个有 2 个屏幕的简单应用程序: 登录和主。 在文件 Login.js 中:
import React, {Component} from 'react';
import {Text, View, Button, StyleSheet, TextInput} from 'react-native';
export default class Login extends Component {
constructor(props) {
super(props);
this.state = {
user_name: '',
password: ''
};
}
render() {
return (
<View>
<Text>Username:</Text>
<TextInput
onChangeText={(text) => {
this.setState({user_name: text});
}}/>
<Text>Password:</Text>
<TextInput
secureTextEntry={true}
onChangeText={(text) => {
this.setState({password: text});
}}/>
<View style={styles.wrapper}>
<Button
onPress={this.props.click}
title="Login"
accessibilityLabel="Login to system"/>
</View>
</View>
);
}
}
Login.propType = {
user: React.PropTypes.string.isRequired,
pass: React.PropTypes.string.isRequired
}
const styles = StyleSheet.create({
wrapper: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-around'
}
});
登录成功时,我有用于 renderScene 的 Main.js。 在文件 index.android.js 中,我为 AppRegistry 声明了类 RouteTest:
import React, {Component} from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Navigator,
Alert,
Button
} from 'react-native';
import Main from './Screen/Main.js';
import Login from './Screen/Login.js';
class RouteTest extends Component {
renderScene(route, navigator) {
switch (route.name) {
case 'main':
return (<Main />);
case 'login':
return (<Login
click={()=>{
if(this.state.user_name == 'abc' && this.state.password == '123') {
navigator.push({name: 'main'})
} else {
Alert.alert("Login failed");
}
}}/>);
}
}
render() {
return (<Navigator
initialRoute={{
name: 'login'
}}
renderScene={this.renderScene}/>);
}
}
AppRegistry.registerComponent('RouteTest', () => RouteTest);
当我从类 Login 的 TextInput 中获取用户名和密码时,我使用: this.state.user_name 但不起作用。 我的问题是:如何在类 RouteTest 的登录类中获取用户输入的值。 谢谢。
【问题讨论】:
-
这似乎是您的新手,我建议您在熟悉 React 时查看状态管理库,例如 Redux。
-
哦,谢谢你的建议。如果不使用 Redux,我还有其他方法吗?
标签: react-native