Произвольно генерировать число для каждого диапазона, который вызывает эту функцию внутри стиля - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь преобразовать несколько букв одновременно, но с разными значениями. Поэтому я намеревался случайным образом генерировать числа для каждого промежутка, чтобы каждый span в конце концов переводился на разное расстояние.

Это работает, но почему-то только одно число используется генерируется случайным образом и присваивается каждому span.

class Header extends Component {

    ...

    returnLetterTransform = () => {
        const y = Math.random() * (15 - 6) + 6;

        return 'translate3d(0,' + -y + 'vh,0)'
    };

    render() {
        const letter = {
            transform: this.state.foldedLogo ? this.returnLetterTransform() : 'translate3d(0,0,0)'
        };

        return(
            <div className="container-fluid header--container">
                <div className="row m-0">
                    <div className="col-12">
                        <div className="header--logo--container">
                            <span className="logo--letter" style={letter}>i</span>
                            <span className="logo--letter" style={letter}>m</span>
                            <span className="logo--letter" style={letter}>h</span>
                            <span className="logo--letter" style={letter}>r</span>
                            <span className="logo--letter" style={letter}>m</span>
                            <span className="logo--letter" style={letter}>n</span>
                            <span className="logo--letter" style={letter}>n</span>
                        </div>
                    </div>
                </div>
            </div>
        );
    }



}

export default Header;

1 Ответ

0 голосов
/ 22 марта 2020

Надеюсь, это кому-нибудь поможет.

    ...
    var that = this,

        returnLetterTransform = () => {
            const y = Math.random() * (15 - 6) + 6;
            return 'translate3d(0,' + -y + 'vh,0)'
        },

        /* change to function
            to get object dynamically
         */
        letter = () => {
            const transform = that.state.foldedLogo ? that.returnLetterTransform() : 'translate3d(0,0,0)';
            return { transform: transform };
        };


    render() {
        return(
            /* call dynamic letter function */
            ... style={that.letter()} ...
            ... style={that.letter()} ...
            ...
        );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...