Переходы происходят слишком быстро на iPhone Safari (React) - PullRequest
0 голосов
/ 25 мая 2019

У меня есть приложение React с нижним колонтитулом на мобильном устройстве.Все отлично работает на рабочем столе, но когда я захожу на сайт на моем iPhone, нижний колонтитул вставляется так быстро, что почти мгновенно.Я работаю с Gatsby, который для меня автоматически префиксируется, поэтому добавлен webkit-transition.

Я также использую стилизованные компоненты только для справки.

Вот код:

Нижний колонтитул:

const FooterOuter = styled.footer`
    background: ${colors.grey_light};
    margin-top: 3rem;
    height: 12rem;
    transition: transform .3s;
    transform: translateY(12rem);
    position: absolute;
    bottom: 0px;
    width: 100%;
    left: 0px;


    ${media.phone`
    position: fixed;
    background: ${colors.grey_light};

    z-index: 16;
    bottom: 0px;
    left: 0px;  
    transform: ${props => props.showing ? "translateY(4rem)" : "translateY(20rem)"};

    opacity: 1;
    `}
`




const Footer = ({showing}) => {

    return (
        <FooterOuter showing={showing}></FooterOuter>
    )
} 

и родительский компонент:

class ContainerComp extends React.Component {
  constructor(props) {
    super(props)

    this.state = {
      showing: false,
    }
  }

  componentDidMount() {
    window.addEventListener("scroll", this.handleScroll)
    const body = document.querySelector('body')

    if(body.scrollHeight <= document.documentElement.clientHeight){
        this.setState({
            showing: true
        })
    }
  }

  handleScroll = () => {
    if (window.innerWidth <= 900) {
        if (document.body.getBoundingClientRect().top < 0) {
            this.setState({
                showing: true
            })
        } else {
            this.setState({
                showing: false
            })

        }
    } else {
        this.setState({
            showing: true
        })
    }



  }

  render() {
    return (
      <Container>
        <Header showing={this.state.showing} />
        {this.props.children}
        <Footer showing={this.state.showing} />
      </Container>
    )
  }
}

Как я уже говорил, в моем браузере на настольном компьютере это работает просто отлично, а размеры на мобильных устройствах правильные.Проблема заключается в том, что переход занимает менее 0,3 секунды.Раньше у меня было «облегчение» переходов, чтобы попытаться помочь с этой проблемой, но я не играл в кости.Было бы здорово узнать, делаю ли я что-то по большей части неправильно или это проблема React.Спасибо заранее.

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