import React, { Component } from "react";
import { connect } from "react-redux";
import { Text, View, TouchableOpacity, StyleSheet,Image ,TextInput,Button} from "react-native";
import Icon from 'react-native-vector-icons';
import { login } from "../Actions/actionCreator";
class LoginScreen extends Component {
static navigationOptions = {
title: "Login"
};
constructor(props){
super(props);
this.state = {
username:'',
password:''
}
}
doLogin(username,password)
{
}
render() {
return (
<View style={styles.rootContainer}>
<Image
style={styles.logo}
source={require('/Users/apple/Desktop/redux-react-navigation-demos-authFlow/src/images/logo.png')}
/>
<Icon
name='user'
color='#000'
size={14}
/>
<TextInput
onChangeText={username => this.setState({ username })}
value={this.state.username}
style={styles.textInput}
placeHolder="Username"
/>
<TextInput
onChangeText={password => this.setState({ password })}
value={this.state.password}
style={styles.textInput}
placeHolder="Password"
/>
<Text style={styles.textGreen}>Forget Your Password</Text>
<Button
onPress={() => {
this.doLogin(this.state.username, this.state.password)
}}
color="#ffffff"
title="Sign In"
>
Sign In
</Button>
</View>
);
}
}
const styles = StyleSheet.create({
rootContainer: {
flex: 1,
backgroundColor: "cyan",
justifyContent: "center",
alignItems: "center"
},
textStyles: {
textAlign: "center",
color: "rgba(0,0,0,0.8)",
fontSize: 16
},
touchableStyles: {
marginTop: 15,
backgroundColor: "black",
paddingHorizontal: 50,
paddingVertical: 10,
borderRadius: 5
},
textGreen: {
textAlign:"center",
fontSize:16,
color:'#7dc4a6'
},
logo: {
width: 587,
height: 112
},
textInput: {
borderColor:'black',
backgroundColor:'#D3D3D3',
width:300,
borderWidth: 1,
borderStyle: 'solid',
fontSize:15,
borderRadius: 25,
}
});
const mapDispatchToProps = {
login
};
const Login = connect(null, mapDispatchToProps)(LoginScreen);
export default Login;
上面的代码是我的LoginScreen组件,我已经导出了我的登录界面,请检查。我的模拟器抛出一个错误,说不变冲突,说我还没有导出我的组件。我有一个loginScreen组件,这是我想要导出的。出于路由和导航的目的,我将在navigationStack中导入此组件。
错误的屏幕截图:

发布于 2018-01-28 19:09:40
请勿使用default导出组件。只要使用export Login或export const Login = connect(null, mapDispatchToProps)(LoginScreen);即可。
然后,在您的StackNavigator中导入它:import { Login } from 'src/components/Login。
这应该可以解决您导入的comp的实例为undefined的问题。
发布于 2019-09-20 15:13:48
如果将"default“与export一起使用,即
export default Login;然后,您应该像这样导入它:
import Login from 'src/components/Login'如果你没有使用"default",试着像这样导入:
import {Login} from 'src/components/Login'发布于 2019-09-20 15:34:56
最有可能的情况是,Icon导入是错误的,因此最终会发生undefined,从而触发错误。
假设您使用的是这个包:https://github.com/oblador/react-native-vector-icons,正确的导入应该是:
import Icon from 'react-native-vector-icons/FontAwesome';(注意末尾添加的/FontAwesome )
作为一种通用的调试方法,每当您收到此错误时,就在render()内部(甚至在类外部)对用作标记的所有变量执行一个console.log。通常其中一个是undefined,您已经找到了罪魁祸首。确保导入工作正常,并生成Component或非空string,这样就可以开始导入了:)
https://stackoverflow.com/questions/48485006
复制相似问题