动画后未触发媒体查询

时间:2020-06-24 06:49:03

标签: javascript css reactjs media-queries styled-components

我有一个使用反应弹簧调整大小的组件。单击其他组件时将调整其大小。我在此组件内设置了一个媒体查询,该媒体查询应在调整大小但失败时触发。但是,如果我使用chrometools切换不同的设备,它就可以工作。


受控组件:

func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?) {
        
        if let error = error {
            print(error)
            return
        }
        
        if let result = authDataResult, let userInfo = result.additionalUserInfo {
            if userInfo.isNewUser {
                let username: String
                if result.user.isAnonymous {
                    let usernameNumber = String(Int(Date().timeIntervalSince1970) * Int.random(in: 1...9)).suffix(6)
                    username = "Guest\(usernameNumber)"
                } else {
                    username = result.user.displayName ?? "" // displayName is nil here
                }
                var data = [
                    "username" : username
                ]

                // Do something here
            }
       }
}


控制组件:

import React from 'react'
import {useSpring, animated} from 'react-spring'
import styled from 'styled-components'


const PlayerWrapper = styled.div`
    @media all and (max-width: 700px) {
        background-color: red;
        grid-template-areas:
            'HEADER HEADER HEADER HEADER'
            '... ... ... ...'
            'COVER SONG ... ...'
            'CONTROLS CONTROLS CONTROLS CONTROLS';
    }

    background-color: purple;
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    box-sizing: border-box;
    padding: 25px;
    width: 100%;
    height: 100%;
    display: grid;
    grid-template-areas:
        'HEADER HEADER HEADER'
        'COVER COVER COVER'
        'SONG SONG SONG'
        'CONTROLS CONTROLS CONTROLS';
`

export default function Player() {
    const mobileWidth = useSelector((state) => state.mobileWidth)
    const mobileHeight = useSelector((state) => state.mobileHeight)
    const isMobile = useSelector((state) => state.mobile)
    const dispatch = useDispatch()

    const convertToPercent = (numerator, denominator) => {
        return (numerator / denominator) * 100
    }

    if (window.innerWidth < mobileWidth) {
        dispatch(setWidth(window.innerWidth))
    }
    if (window.innerHeight < mobileHeight) {
        dispatch(setHeight(window.innerHeight))
    }

    const props = useSpring({
        width: isMobile
            ? `${convertToPercent(mobileWidth, window.innerWidth)}vw`
            : `100vw`,
        height: isMobile
            ? `${convertToPercent(mobileHeight, window.innerHeight)}vh`
            : `100vh`,
    })
    

    return (
      <animated.div style={props}>
        <PlayerWrapper>
            ...children
        </PlayerWrapper>
      </animated.div>
    )
}

这是我当前面临的问题的一个示例。关于我在这里做错什么的任何想法?

0 个答案:

没有答案