是否可以在另一个对象中导入对象?

时间:2019-02-01 05:27:05

标签: javascript ecmascript-6 es6-modules

我有一些文件可以导出对象以用作模型。在某些对象中,我使用另一个文件中的模型。只要另一个模型不使用另一个文件,此方法就可以正常工作,但是如果另一个模型不使用另一个文件,则该文件变为import React, {Component} from 'react' import { Alert, AsyncStorage, Keyboard, Text, View, TextInput, TouchableHighlight, TouchableOpacity, Image, ActivityIndicator, } from 'react-native' import config from "../../../../config"; import styles from './style' import {Icon} from "react-native-elements"; class Login extends Component { constructor(props) { super(props); this.state = { credentials: { email: "", password: "", }, loading: false, }; this.toggleLoader = this.toggleLoader.bind(this); } updateText(text, field) { let newCredentials = Object.assign(this.state.credentials); newCredentials[field] = text; this.setState = ({ credentials: newCredentials }) } toggleLoader() { this.setState({ loading: !this.state.loading }); } async login() { Keyboard.dismiss(); let credentials = this.state.credentials; if (this.state.credentials.email == '' || this.state.credentials.password == '') { Alert.alert("Please fill all the fields."); } else { const that = this; credentials.email = that.state.credentials.email.toLowerCase(); // start loading when all fields are fill this.setState({ loading: !this.state.loading }); fetch(config.baseURL + 'mobileapi/get_token/?username=' + `${that.state.credentials.email}` + '&password=' + `${that.state.credentials.password}`, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify({ credentials: credentials, }), }) .then((response) => response.json()) .then(responseJson => { //stop loading after successful response this.setState({ loading: !this.state.loading }); if (responseJson.confirmation === "success") { // alert(JSON.stringify(responseJson.data)); AsyncStorage.setItem('USER_ID', responseJson.data.user_id); AsyncStorage.setItem('USER_NAME', responseJson.data.user_name); AsyncStorage.setItem('USER_TYPE', responseJson.data.user_type); AsyncStorage.setItem('FIRST_NAME', responseJson.data.first_name); AsyncStorage.setItem('LAST_NAME', responseJson.data.last_name); AsyncStorage.setItem('EMAIL', responseJson.data.user_email); AsyncStorage.setItem('AUTHENTICATION_TOKEN', responseJson.data.token); setTimeout(() => { this.props.navigation.navigate("Home") }, 500); } else { setTimeout(() => { //code to handle an error throw new Error(responseJson.message); }, 500); } }) .catch((err) => { //stop loading this.setState({ loading: !this.state.loading }); setTimeout(() => { if (JSON.stringify(err.message) === JSON.stringify('Network request failed')) { alert('Please check your internet connection or try again later'); } else { alert(JSON.stringify(err.message)); } }, 500); }) } } render() { const loginText = (this.state.loader) ? 'Loading' : 'Login'; return ( <View style={styles.container}> <Image source={require('../../../../assets/images/icons/logo.png')} style={{width: 99, height: 99, margin: 5,}}/> <Text style={{fontSize: 20, margin: 20, color: "#0aa1e2"}}>Test App</Text> <View style={styles.inputContainer}> <Image style={styles.inputIcon} source={require('../../../../assets/images/icons/username.png')}/> <TextInput style={styles.inputs} placeholder="Username" keyboardType="email-address" underlineColorAndroid='transparent' onChangeText={text => { this.updateText(text, 'email') }} value={this.state.email} autoCorrect={false} autoCapitalize={"none"} /> </View> <View style={styles.inputContainer}> <Image style={styles.inputIcon} source={require('../../../../assets/images/icons/password.png')}/> <TextInput style={styles.inputs} placeholder="Password" secureTextEntry={true} underlineColorAndroid='transparent' onChangeText={text => { this.updateText(text, 'password') }} value={this.state.password} autoCorrect={false} secureTextEntry/> </View> <TouchableHighlight style={[styles.buttonContainer, styles.loginButton]} onPress={this.login.bind(this)} > <View style={{justifyContent: 'center', flex: 1, flexDirection: 'row'}}> {this.state.loading === false ? <Icon name='login' type='entypo' size={16} color='white'/> : <ActivityIndicator size="small" color="#ffffff"/>} <Text style={styles.loginText}> {loginText} </Text> </View> </TouchableHighlight> </View> ); } } export default Login; 。我认为这是由于循环引用,因此为避免混乱,它会废弃其中一个引用。

这是一个愚蠢的例子:

undefined

这有可能吗?

0 个答案:

没有答案