我一直在努力部署一个React-native项目,该项目在ios和android模拟器上都可以正常工作(并且将继续工作)。我最近在Playstore和testflight中将其部署到Beta中,当我们启动该应用程序时,似乎缺少一些占位符和默认文本:-(
我是本机开发的新手,所以任何建议都将不胜感激。可能是生成我的应用程序捆绑包时我缺少了什么吗?我正在使用react-native:0.55.4。下面是我的登录页面上的代码,其中缺少标签,输入内容也没有传递到下一页。
。 。
constructor(props) {
super(props);
this.state = {
username: '',
password: '',
isJobOwner: false,
saveCredentials: false,
isLoading: false
};
}
。 。
onPressLogin() {
this.props.navigation.navigate('SignUpChoice', {
data: {
username: this.state.username,
password: this.state.password
}
});
}
。 。
<Form style={styles.loginForm}>
<View style={styles.formInputs}>
<UnderlinedInput floating={true} label={'Email'} value={this.state.username}
onChangeText={(username) => this.setState({username})}
keyboardType={'email-address'} autoCapitalize={'none'}/>
<UnderlinedInput floating={true} label={'Password'} value={this.state.password}
onChangeText={(password) => this.setState({password})}
secureTextEntry={true}
autoCapitalize={'none'}/>
</View>
<View style={styles.formButtons}>
<Button transparent
onPress={() => this.onPressForgotPassword()}
disabled={this.state.isLoading} style={styles.forgotButtonStyle}><Text
style={styles.forgotTextStyle}>Forgot
Password?</Text></Button>
<Button primary style={styles.loginButtonStyle} onPress={() => this.onPressLogin()}
disabled={this.state.isLoading}>
<Text style={styles.loginTextStyle}>Sign In</Text>
</Button>
</View>
。 。
function mapStateToProps(state) {
const data = state.data.loginReducer;
return {
requesting: data.requesting,
successful: data.successful,
errors: data.errors,
isJobOwner: data.isJobOwner
}
}
。 。
export default connect(mapStateToProps)(LoginScreen);
在模拟器上一切正常,但在设备上好像状态没有被更新。
编辑:包括UnderlinedInput的源
import React from 'react';
import {Item, Input, Label} from 'native-base';
import colors from 'Colors';
const UnderlinedInput = ({defaultValue, label, value, onChangeText, secureTextEntry, keyboardType, autoCapitalize, floating, onEndEditing}) => {
return (
<Item floatingLabel={floating} stackedLabel={!floating} style={styles.inputTextStyle}>
<Label style={styles.labelStyle}>{label}</Label>
<Input
secureTextEntry={secureTextEntry || false}
autoCorrect={false}
autoCapitalize={autoCapitalize || 'words'}
value={value}
onChangeText={onChangeText}
keyboardType={keyboardType || 'default'}
defaultValue={defaultValue}
onEndEditing={onEndEditing}
style={styles.inputMainStyle}
/>
</Item>
);
};
const styles = {
inputTextStyle: {
borderBottomColor: colors.lightGrey,
borderBottomWidth: 1,
color: colors.lightGrey,
width: '80%',
marginLeft: 'auto',
marginRight: 'auto',
paddingBottom: 10
},
inputMainStyle: {
color: colors.lightGrey,
fontSize: 14
},
labelStyle: {
fontWeight: '700',
letterSpacing: 1,
paddingTop: 4,
color: colors.lightGrey,
fontSize: 14
}
};
导出默认的UnderlinedInput;
答案 0 :(得分:0)
从我的角度来看,这是因为您使用的是第三方库UnderlinedInput,请确保这些组件不是100%可靠的,它们在某些设备上或某些情况下无法使用。如果您尝试使用简单的TextInput作为示例,那么我敢肯定它会起作用。