reactjs - 延迟渲染反应
问题描述
我是 React 和 JS 的新手,遇到了一个问题。我想在用户在网站上停留 5 秒后显示一个模态。我正在尝试使用“setTimeout”函数来延迟我的模态渲染。我不确定为什么这不起作用。非常感谢任何和所有帮助。提前致谢!!
import styled from 'styled-components'
import Team from '../../images/Team.svg'
import { Button, Background, ModalWrapper, ModalImg, ModalContent, CloseModalButton } from './ModalElements'
const Modal = () => {
const [showModal, setShowModal] = useState(false);
return (
<>
{showModal ? (
<Background>
<ModalWrapper showModal={showModal}>
<ModalImg src={Team} alt="team" />
<ModalContent>
<h1>Title</h1>
<p>Subtitle thing</p>
<button>Join Today</button>
</ModalContent>
<CloseModalButton aria-label='Close modal' onClick={() => setShowModal(prev => !prev)} />
</ModalWrapper>
</Background>
) : null}
</>
)
}
class ShowModal extends Component {
constructor(props) {
super(props);
this.state = {
timePassed: false
}
}
render() {
setTimeout(() => { this.setState({ timePassed: true }) }, 5000);
if (!this.state.timePassed) {
return Modal
}
}
}
export default Modal
解决方案
尝试这个:
import React from 'react'
import styled from 'styled-components'
import Team from '../../images/Team.svg'
import { Button, Background, ModalWrapper, ModalImg, ModalContent, CloseModalButton } from './ModalElements'
const Modal = () => {
const [showModal, setShowModal] = useState(false);
React.useEffect(() => {
setTimeout(() => setShowModal(true), 5000);
}, []);
return (
<>
{showModal ? (
<Background>
<ModalWrapper showModal={showModal}>
<ModalImg src={Team} alt="team" />
<ModalContent>
<h1>Title</h1>
<p>Subtitle thing</p>
<button>Join Today</button>
</ModalContent>
<CloseModalButton aria-label='Close modal' onClick={() => setShowModal(prev => !prev)} />
</ModalWrapper>
</Background>
) : null}
</>
)
}
export default Modal
这个怎么运作?文档
推荐阅读
- fonts - 如何将 Sublime 文本中的字体更改为“Fixed Semicondensed”?
- python - 如何使用 Google Colab 安装 vizdoom?
- ios - 如何获取 UIStackView 内的 UIView 的宽度值
- javascript - 无法在 Angular 上显示日期管道
- android - 添加 Android 特定的外部库
- python - 所有从 Twitter 中提取数据的尝试都导致“模块”对象没有属性“OAuthHandler”
- tensorflow - Tensorflow:tf.rnn.raw_rnn - fn_loop 不可调用?
- amazon-web-services - 如何使用 ALB 和 OAuth 服务器安全地保护 AWS VPC 中的微服务?
- python - 如何根据用户登录执行不同的数据库查询
- codeigniter - 在 Code Igniter 中将输入密码从 varchar 更改为 md5