首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React-Native,Redux,invariant

React-Native,Redux,invariant
EN

Stack Overflow用户
提问于 2018-01-28 17:44:07
回答 3查看 584关注 0票数 0

代码语言:javascript
复制
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中导入此组件。

错误的屏幕截图:

EN

回答 3

Stack Overflow用户

发布于 2018-01-28 19:09:40

请勿使用default导出组件。只要使用export Loginexport const Login = connect(null, mapDispatchToProps)(LoginScreen);即可。

然后,在您的StackNavigator中导入它:import { Login } from 'src/components/Login

这应该可以解决您导入的comp的实例为undefined的问题。

票数 0
EN

Stack Overflow用户

发布于 2019-09-20 15:13:48

如果将"default“与export一起使用,即

代码语言:javascript
复制
export default Login;

然后,您应该像这样导入它:

代码语言:javascript
复制
import Login from 'src/components/Login'

如果你没有使用"default",试着像这样导入:

代码语言:javascript
复制
import {Login} from 'src/components/Login'
票数 0
EN

Stack Overflow用户

发布于 2019-09-20 15:34:56

最有可能的情况是,Icon导入是错误的,因此最终会发生undefined,从而触发错误。

假设您使用的是这个包:https://github.com/oblador/react-native-vector-icons,正确的导入应该是:

代码语言:javascript
复制
import Icon from 'react-native-vector-icons/FontAwesome';

(注意末尾添加的/FontAwesome )

作为一种通用的调试方法,每当您收到此错误时,就在render()内部(甚至在类外部)对用作标记的所有变量执行一个console.log。通常其中一个是undefined,您已经找到了罪魁祸首。确保导入工作正常,并生成Component或非空string,这样就可以开始导入了:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48485006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档