【发布时间】:2022-01-10 23:28:52
【问题描述】:
我创建了一个名为Alertify.js的组件
import React, {useEffect, useState} from "react";
import { Alert } from 'reactstrap';
function Alertify(props){
const [show, setShow] = useState(props.show);
useEffect(
() => {
let timer = setTimeout(() => setShow(false), 3000);
return () => {
clearTimeout(timer);
};
},
[]
);
return (
<Alert color={props.color} className={show ? 'float active' : 'float'}>{props.text}</Alert>
)
}
export default Alertify;
并用于index.js
import Alertify from "../Component/Alertify";
const [showAlert, setShowAlert] = useState(false);
return...
<Alertify text={'hello world'} color={'danger'} show={showAlert}/>
它会在条件为真后显示此警报:
if(condition){
setShowAlert(true)
}
但是出了点问题,并且没有显示警报,而且我是 reactjs 的新手,知道如何解决这个问题吗? 我想要的只是在条件为真后显示警报,然后在 3 秒后隐藏。
它还会显示我是否删除了useEffect,但在条件为真之前,并且也没有隐藏。
【问题讨论】:
-
请问这个条件在哪里以及如何应用?编辑:另外,我不确定您是否使用了 useEffect,因为(根据您提供的代码)
show在渲染组件时似乎是错误的。 -
@thebigfundamentals 很容易。在此条件下单击 index.js 中的按钮后,我使用了
setShowAlert(true)
标签: javascript reactjs ecmascript-6 jsx