在React.js

时间:2018-02-18 11:58:00

标签: javascript reactjs

这个很难。我花了几天时间来解决这个问题,但我尝试的所有解决方案都不准确。

问题在于我正在尝试构建“打字文字效果”。这也应该处理句子的变化,即。第一个句子是打字的,然后它消失了,其他的句子又开始被打字,依此类推,它进入循环。这里的问题是,当第一句话结束时,我想将我的闪光灯暂时搁置一段时间,例如2秒钟。这似乎是使用setTimeout的理想场所,但遗憾的是我的所有试验都是错误的。

如果你能帮帮我,我真的很感激!谢谢

这是我的代码:

import React, { Component } from 'react';
import '../../sass/main.scss';

class TypeAnimation extends Component {
    constructor(props) {
        super(props);
        this.state = {
            sec: 0,
            sec2: 0,
            currentSentence: 0,
            blinker: '|',
        };
    }
    componentDidMount() {
        this.textInterval = setInterval(() => {
            this.setState(
                prevState => ({ 
                    sec: prevState.sec !== this.props.text[0].length ? prevState.sec + 1 : 0,
                    currentSentence: prevState.sec === this.props.text[0].length ?
                    prevState.currentSentence + 1 : prevState.currentSentence,
                })
            ); 
        }, 100);
    }


    render() {
        let otherSentences;
        const nextSentences = this.props.text; // here comes the array of few sentences
        const currentText = nextSentences[this.state.currentSentence];

        if (this.state.currentSentence !== nextSentences.length) {
            otherSentences = currentText.substr(0, this.state.sec);
        } else {
            clearInterval(this.textInterval);
            otherSentences = nextSentences[nextSentences.length - 1];
        }

        return (
            <div>
                <h2>
                    {otherSentences}
                    <span className='blinker'> {this.state.blinker} </span>
                </h2>
            </div>
        );
    }
}

export default TypeAnimation;

0 个答案:

没有答案