Реагировать на собственную анимацию скользящего бокового меню - PullRequest
0 голосов
/ 10 октября 2019

Я хочу создать боковое меню, но я не хочу использовать ящик потока маршрутизатора rn, потому что я хочу, чтобы меню скользило по основному контенту, а не скользило поверх него. Я довольно незнаком с анимацией, но это кажется простой задачей. По сути, я раздираю домашний экран с шириной в 1,75 раза больше ширины экрана пользователя, когда компонент монтируется, я хочу, чтобы начальное значение x было 0,75 * ширины экрана, а затем, когда я нажимаю кнопку, значение x уменьшается до 0 (или крайнее левое значение x компонента.

Вот что у меня есть:


import React, {Component} from 'react';
import {View, Dimensions, Animated} from 'react-native';
import SideMenu from '../../components/Home/SideMenu';
import Header from '../../components/Home/Header';
import LocationInfo from '../../components/Home/LocationInfo';
import Tabs from '../../components/Home/Tabs';
import Colors from '../../Colors';

class Main extends Component {
  state = {
    active: 0,
    xSideMenu: 0,
    xHome: 0,
    translateX: new Animated.Value(0),
  };

  handleSlide = type => {
    let {translateX} = this.state;
    Animated.timing(translateX, {
      toValue: type,
      duration: 75,
    }).start();
  };
  render() {
    return (
      <View style={styles.homeContainerStyle}>
        <SideMenu />
        <View style={styles.topSectionContainer}>
          <Header />
          <View style={styles.locationInfoContainer}>
            <LocationInfo />
          </View>
          <View style={styles.tabsContainer}>
            <Tabs />
          </View>
        </View>
      </View>
    );
  }
}

const styles = {
  homeContainerStyle: {
    width: Dimensions.get('window').width * 1.75,
    flexDirection: 'row',
  },
  topSectionContainer: {
    backgroundColor: Colors.white,
    shadowColor: Colors.black,
    shadowOffset: {width: 0, height: 1},
    shadowOpacity: 0.3,
  },
  locationInfoContainer: {
    width: Dimensions.get('window').width,
    paddingTop: 20,
    justifyContent: 'center',
    alignItems: 'center',
  },
  tabsContainer: {
    paddingTop: 5,
  },
};

export default Main;

Я начал настраивать анимацию, но есть ли у кого-нибудь какие-либо предложения относительно того, что будет дальше? шаги должны быть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...