Ошибка React-Spring: анимированная библиотека из React-Spring возвращает недопустимый тип элемента ERROR

Я пытаюсь сделать простую анимацию, в которой мое изображение будет исчезать.

Код ниже Я импортирую {useSpring, animated} from 'react-spring'. Я создаю простую функцию useSpring logoLoadingScreen. Затем я добавляю функцию внутри стиля для ИЗОБРАЖЕНИЯ; однако анимация не отображается.

import React from 'react';
import {useSpring, animated} from 'react-spring'
import {View,Text,StyleSheet,Image} from 'react-native';

const logoReParty = () =>{
    require('../img/img1.jpg')
}

const logoLoadingScreen = () => {

    //react Native ANIMATION from 'react-spring'
    const fade = useSpring({
        from:{
            opacity: 0
        },
        to: {
            opacity: 1
        }
    });


    return <View>

       <Image source={require('../img/img1.jpg')} 
       style={[styles.logoBackground, logoLoadingScreen]}
       resizeMode={"contain"}

       />
       <Text style={styles.loadingLogo}>Loading Screen</Text>
    </View>
};

Кроме того, я опробовал этот метод ниже, чтобы использовать «анимированную» библиотеку для обертывания содержимого VIEW. Однако я получаю сообщение об ошибке stating 'Invariant Violation: Element type is invalid expected a string or a class/function but got: undefined.

    return <animated.View>

       <Image source={require('../img/img1.jpg')} 
       style={[styles.logoBackground, logoLoadingScreen]}
       resizeMode={"contain"}

       />
       <Text style={styles.loadingLogo}>Loading Screen</Text>
    </animated.View>
};

Как я могу показать анимацию затухания на изображении с помощью react-spring? Кроме того, как я могу показать анимацию затухания для всего экрана?

Спасибо :)

ОБНОВИТЬ


Как упоминалось ниже, я создал новый const AnimatedView = animated (View). Однако непрозрачность экрана не меняется, и я не вижу изменений в анимации.

const AnimatedView = animated(View);

const logoLoadingScreen = () => {

    //react Native ANIMATION from 'react-spring'
    const fade = useSpring({
        from:{
            opacity: 0
        },
        to: {
            opacity: 0.2
        }
    });


    return <AnimatedView style={logoLoadingScreen}>

       <Image source={require('../img/img1.jpg')} 
       style={[styles.logoBackground, logoLoadingScreen]}
       resizeMode={"contain"}

       />
       <Text style={styles.loadingLogo}>Loading Screen</Text>
    </AnimatedView>
};


В чем может быть причина, по которой анимация не отображается на экране? К вашему сведению: больше нет ошибок, но вместо этого на экране не отображается анимация. Еще раз спасибо за вашу помощь! ^^

Решено


Добавьте стиль fade inside, который решил мою проблему с анимацией.

return <AnimatedView style={logoLoadingScreen,fade}>

СПАСИБО ЗА ТЕМ, КТО МНЕ ПОМОГИЛ :)


person Daniel Kang    schedule 12.01.2020    source источник


Ответы (2)


Только элементы html доступны как постоянные в анимации. Например, div доступен как animated.div. Для React native и для ваших собственных компонентов таких констант нет. Вам необходимо создать новый компонент с анимацией. И вы должны использовать этот новый вместо обычного просмотра.

Создайте новый компонент:

const AnimatedView = animated(View)
return <AnimatedView style={logoLoadingScreen, ...fade}>
person Peter Ambruzs    schedule 12.01.2020
comment
Здравствуйте, я пробовал так, как вы упомянули выше; однако я не вижу изменений в анимации. Я обновил вопрос выше. Вы знаете, как сделать так, чтобы анимация отображалась на экране. Также спасибо за ответ :) - person Daniel Kang; 13.01.2020
comment
Вы должны использовать fade как свойство стиля. Я обновил свой код выше. - person Peter Ambruzs; 13.01.2020
comment
Спасибо. Добавив fade в свойство style, решил код! - person Daniel Kang; 13.01.2020

добавить импорт

import { Animated} from 'react-native'

изменение

return <Animated.View>
person Yoel    schedule 12.01.2020
comment
привет, я пробовал использовать Animated.View через import {Animated} из response-native; однако на экране нет анимации. Я изменил непрозрачность с: 0 на непрозрачность: 0,2; однако я не вижу изменений на экране - person Daniel Kang; 13.01.2020
comment
Я решил это, но спасибо вам за помощь! :) - person Daniel Kang; 13.01.2020