import { Box } from './Box'; import { Component, Fragment } from 'inferno'; export class FakeTerminal extends Component { constructor(props) { super(props); this.timer = null; this.state = { currentIndex: 0, currentDisplay: [], }; } tick() { const { props, state } = this; if (state.currentIndex <= props.allMessages.length) { this.setState((prevState) => { return { currentIndex: prevState.currentIndex + 1, }; }); const { currentDisplay } = state; currentDisplay.push(props.allMessages[state.currentIndex]); } else { clearTimeout(this.timer); setTimeout(props.onFinished, props.finishedTimeout); } } componentDidMount() { const { linesPerSecond = 2.5 } = this.props; this.timer = setInterval(() => this.tick(), 1000 / linesPerSecond); } componentWillUnmount() { clearTimeout(this.timer); } render() { return ( {this.state.currentDisplay.map((value) => ( {value}
))}
); } }