Задать вопрос
  • Как исправить значение не умещается в тип character varying(50)?

    @alex_vma
    кто будет гуглить даже спустя столько лет - меняете тип на varchar(255) или varchar(500) например, или если вам как мне не хватило даже этого, то меняете на тип TEXT - тут ограничение столбца почти в 1гб
    Ответ написан
    2 комментария
  • Почему nodemailer не отправляет почту?

    @alex_vma Автор вопроса
    service: 'smtp.gmail.com' - заменить на host: 'smtp.gmail.com'. Пример был из старой книги, после обновления используется свойтсво host
    Ответ написан
    Комментировать
  • Почему не находиться модуль chai?

    @alex_vma Автор вопроса
    решил вопрос установкой более старой версии chai
    Ответ написан
    Комментировать
  • Как правильно писать анимации?

    @alex_vma Автор вопроса
    Решил вопрос самостоятельно, возможно кому-то будет
    полезно

    import React, {useEffect, useState, useRef} from 'react';
    import {makeStyles} from "@material-ui/core/styles";
    
    
    const useStyles = makeStyles({
        root: {
            overflow: 'hidden',
            display: 'inline-block'
        },
        wrapper: {
            color: 'red',
            display: 'inline-block'
        }
    })
    
    const Animation = (props) => {
        const classes = useStyles();
        const [styles, setStyles] = useState({
            transform: defineElementPosition(props),
            transition: props.transition,
            transitionTimingFunction: props.timing,
            opacity: props.opacityEffect === true ? 0 : 1
        })
    
        const elementWrapperRef = useRef(null);
    
        function defineElementPosition(side){
            switch(side.position){
                case('left'):
                    return `translateX(${side.deep !== undefined ? side.deep.offset + 'px' : '-120%' })`
                case('right'):
                    return `translateX(${side.deep !== undefined ? side.deep.offset + 'px' : '120%' })`
                case('top'):
                    return `translateY(${side.deep !== undefined ? side.deep.offset + 'px' : '-120%' })`
                case('bottom'):
                    return `translateY(${side.deep !== undefined ? side.deep.offset + 'px' : '120%' })`
                default: return 'translateY(100%)'
            }
        }
        function scrollElement(){
            const clientWindowHeight = document.documentElement.clientHeight || window.innerHeight;
            if(elementWrapperRef.current.getBoundingClientRect().top <= clientWindowHeight){
                setStyles({...styles, transform: 'translate(0,0)', opacity: 1})
            }
        }
    
        useEffect(() => {
            window.addEventListener('scroll', scrollElement)
            return () => window.removeEventListener('scroll', scrollElement) // Сброс эффекта - исправляет утечку памяти
        }, [])
    
    
        return(
            <div className={classes.root}>
                <div className={classes.wrapper} style={styles} ref={elementWrapperRef}>
                    {props.children}
                </div>
            </div>
        )
    }
    export default Animation;

    Ответ написан
    Комментировать