Не удалось разрешить путь к изображению из login.js

Я совершенно новичок в выставках и реакциях родных Я пытаюсь использовать ImageBackground Я использую его как код ниже, но получаю эту ошибку «Невозможно разрешить «./assets/back.jpg» из «app\components\Login.js»» Мое изображение уже находится в папке активов в моем проекте А также, когда я пытаюсь импортировать шрифт, я получаю ту же ошибку Нужно ли что-то импортировать перед использованием или что-то еще? Я также пробовал, не импортируя изображение и добавляя путь непосредственно к исходному свойству.

Логин.js

import React, { Component } from 'react';
import back from './assets/back.jpg';
import {
    StyleSheet,
    Text,
    View,
    TextInput,
    KeyboardAvoidingView,
    TouchableOpacity,
    AsyncStorage,
    Image,
    ImageBackground,
} from 'react-native';
import {createStackNavigator, createAppContainer} from 'react-navigation';
export default class Login extends React.Component {
    static navigationOptions = {
        header: null,
    };
    constructor(props) {
        super(props);
        this.state = {
            username:'',
            password:'',
        }
    }
    componentDidMount(){
        this._loadInitialState().done();
    }
    _loadInitialState = async () =>{
        var value = await AsyncStorage.getItem('user');
        if (value !=null){
            this.prop.navigation.navigate('Profile');
        }
    }
    render() {
        return (
            <ImageBackground source = {back} style = {styles.backImg}>
                <KeyboardAvoidingView behavior='padding' style = {styles.wrapper}>
                <View style = {styles.container}>
                <Image
                    style = {styles.logo}
                    source = {require('/MyFirst/assets/logo.png')}
                />
                <TextInput
                    style = {styles.textInput} placeholder='Username'
                    onChangeText = {(username) =>this.setState({username}) }
                    underlineColorAndroid = 'transparent'
                        />
                        <TextInput
                    style = {styles.textInput} placeholder='Password'
                    onChangeText = {(password) =>this.setState({password}) }
                    underlineColorAndroid = 'transparent'
                        />
                        <TouchableOpacity style = {styles.btn}
                    onPress = {this.login}>
                <Text style = {styles.btnText}>Login</Text>
                    </TouchableOpacity>
                    </View>
                    </KeyboardAvoidingView>
            </ImageBackground>

        );
    }
}
const styles = StyleSheet.create({
    wrapper:{
        flex:1,
    },
    container:{
        flex:1,
        alignItems:'center',
        justifyContent:'center',
        backgroundColor:'#e5ffd3',
        paddingLeft:40,
        paddingRight:40,
    },
    logo:{
        width: 250,
        height: 250,
    },
    textInput:{
        alignSelf:'stretch',
        padding:16,
        marginBottom:20,
        backgroundColor:'#fff',
        borderWidth: 1,
        borderColor: '#d6d7da',
        borderRadius: 25,
    },
    btn:{
        alignSelf:'stretch',
        backgroundColor:'#589e25',
        padding:20,
        alignItems: 'center',
        borderRadius: 25,
    },
    btnText:{
        color: '#ffffff',
    },
})

App.js

import React, { Component } from 'react';
import {
    StyleSheet,
    Text,
    View
} from 'react-native';
import {createStackNavigator, createAppContainer} from 'react-navigation';
import Login from './app/components/Login'
import Profile from './app/components/Profile'
const MainNavigator = createStackNavigator({
    Home: {screen: Login},
    Profile: {screen: Profile},
});
const App = createAppContainer(MainNavigator);
export default App;
0
0
938
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны использовать ImageBackground таким образом. Это решит вашу проблему

 <ImageBackground source = {require('../../assets/back.jpg')} style = {styles.backImg}>

Рабочий пример можно найти здесь Связь

удалите import back from './assets/back.jpg'; эту строку. И проверьте путь импорта. Добавьте flex:1 в styles.backImg (если он не добавлен).

Masuk Helal Anik 12.04.2019 19:49

Можешь почистить кеш и попробовать еще раз?

Masuk Helal Anik 12.04.2019 20:19

очистил мой кеш и та же ошибка, мне нужно связать свое изображение с чем-то вроде ссылки npm или ссылки expo?

Hamed Khanezar 12.04.2019 20:31

Перейдите по этой ссылке для рабочего примера закуска.expo.io/@masukhelal/imagebackground. Я думаю, что ваш путь к изображению неверен. Я обновляю свой ответ. Проверь это

Masuk Helal Anik 12.04.2019 20:44

Наконец-то заработало. Как вы догадались, проблема была с адресацией изображения, большое спасибо.

Hamed Khanezar 12.04.2019 22:10

Другие вопросы по теме