0

So I am practicing the React Native Reanimated or the Animation in React Native with Expo. I'm trying to open a screen from bottom to top using Animated.

When I press the Text it will show another screen on top of my Parent Component with Animation from bottom to top.

But this is the output I get:

enter image description here

Output I want to get:

enter image description here

Here are my codes:

class App extends React.Component {
state = {
 openHome: false
}

animation = new Value(0);

openHome = () => {
  this.setState({
    openHome: true
})
Animated.timing(this.animation, {
  duration: 300,
  toValue: 1
}).start();
}

render () {
const {animation} = this;
const translateY = animation.interpolate({
  inputRange: [0, 1],
  outputRange: [-height, 0],
  easing: Easing.inOut(Easing.ease)
});
return (
  <View style={styles.container}>
    <Text onPress={this.openHome}>Open up Home to start working on your app!</Text>
    {
      <Animated.View style={{ transform: [{ translateY }] }}>
        <Home open={this.state.openHome}/>
      </Animated.View>
    }
  </View>
);
}

}

Code for my Child Component which is Home.js:

const Home = props => {
if (!props.open) {
    return (
        <View style={styles.firstContainer}>
        </View>
    );
} else {
    return (
        <View style={styles.secondContainer}>
            <Text>Hello</Text>
        </View>
    );
}

}

const styles = StyleSheet.create({
firstContainer: {
    flex: 1, 
    justifyContent: 'center', 
    alignItems: 'center', 
    backgroundColor: 'transparent', 
    width: '100%'
},
secondContainer: {
    flex: 1, 
    justifyContent: 'center', 
    alignItems: 'center', 
    backgroundColor: 'red', 
    width: '100%',
    position: 'absolute',
    top: 0,
    left: 0,
    right: 0,
    bottom: 0
}
})
Liza Catherine Ombyaw
  • 804
  • 2
  • 11
  • 27

1 Answers1

0

You need new Animated.Value(0) instead of new Value(0) in the first place, if you want to animate a value.

Andus
  • 1,713
  • 13
  • 30