javascript - 我需要在我的反应组件中为 text2 创建一个延迟
问题描述
正如标题所示。您可以在我的代码中看到,我有 text 和 text2 构成了打字效果的文本。但它们都是同时开始的。我想在 text2 上创建一个延迟,以便它在文本完成时开始。任何帮助将不胜感激,并提前感谢您。
class Home extends Component {
constructor(props) {
super(props);
this.state = {
text:"This is sample text",
text2:"This is sample text for text2",
count:0,
show:"",
show2:"",
}
this.update = this.update.bind(this);
}
componentDidMount() {
this.timerID = setInterval(
() => this.update(),
300
);
}
componentWillUnmount() {
clearInterval(this.timerID);
}
update(){
const counter = this.state.count;
const letter = this.state.text.charAt(counter);
const letter2 = this.state.text2.charAt(counter);
const textlength = this.state.text.length;
//let text += letter;
console.log("counter : " + counter + " / letter : " + letter);
console.log("counter : " + counter + " / letter2 : " + letter2);
if(counter <= textlength){
this.setState({
show: this.state.show + letter,
show2: this.state.show2 + letter2,
count: this.state.count + 1,
});
}else{
clearInterval(this.timerID);
}
};
解决方案
干得好
update() {
const counter = this.state.count;
const text1 = this.state.text;
const text2 = this.state.text2;
const letter = text1.charAt(counter);
// Note: It'll be empty string for negative index
const letter2 = text2.charAt(counter - text1.length);
const textlength = text1.length + text2.length;
if(counter < textlength) {
this.setState({
show: this.state.show + letter,
show2: this.state.show2 + letter2,
count: this.state.count + 1,
});
} else {
clearInterval(this.timerID);
}
}
推荐阅读
- java - NoSuchBeanDefinitionException:没有可用的“org.springframework.boot.web.reactive.error.ErrorAttributes”类型的合格bean:
- javascript - 将带有 nonce 的 CSP 标头添加到 Lambda Edge
- python - 是否可以连接 keras 序列实例?
- python - 使用 pandas 数据框创建年度投影数据
- datetime - 在日期表中的日期字段上使用 SUMX 时 OADate 无效
- deep-learning - 转换器的查询、键和值应该在通过线性层之前还是之后拆分?
- sql-server - 如何在gorm中为长时间运行的查询设置超时
- perforce - p4 unshelve 导致“重命名:...权限被拒绝”
- reactjs - apollo-link setContext 将所有标题转换为小写
- c# - 具有多个左连接、分组依据和日期时间转换的 LINQ 版本的 sql 查询