超时后关闭反应错误消息
Dismiss react error messages after a timeout
我正在尝试显示一些反应错误消息并在 5 秒超时后隐藏它们。下面是代码:
import * as React from 'react'
import {ErrorInfo} from '../Twilio/api'
export const Error = ({type, message, visible}: ErrorInfo) => (
// visible=true,
setTimeout(function () {
visible = false
}, 5000),
visible ?
<div>
<p>
<strong>{type}:</strong> {message}
<br/>
<small>
UI version: <code>{GLOBAL_VERSION}</code>
</small>
</p>
</div> : <span/>
)
ErrorInfo
如下:
export type ErrorInfo = {
type: string
message: string
visible: boolean
}
但是,visible
被设置为未定义,因此不会显示错误消息。如果我在导出 Error
时将其设置为 true,则当 visible
变为 false 时,Header
元素不会删除它。
你应该使用状态。像这样:
export default function App() {
const [visible, setIsVisible] = React.useState(false);
setTimeout(function() {
setIsVisible(true);
}, 5000);
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
{visible && <p>Will show in 5 seconds</p>}
</div>
);
}
查看演示 here
您想要控制 Error
组件中的 visible
状态。
然后,您可以使用 useEffect
在 5 秒后隐藏错误(通过适当的清理)
export const Error = ({ type, message }: ErrorInfo) => {
const [visible, setVisible] = useState(false)
useEffect(() => {
// message is empty (meaning no errors). Adjust as needed
if(!message){
setIsVisible(false)
return
}
// error exists. Display the message and hide after 5 secs
setIsVisible(true)
const timer = setTimeout(() => {
setIsVisible(false)
}, 5000);
return () => clearTimeout(timer);
}, [message]) // executes every time `message` changes. Adjust as needed
if(!visible) return null
return (
<div>
<p>
<strong>{type}:</strong> {message}
<br />
<small>
UI version: <code>{GLOBAL_VERSION}</code>
</small>
</p>
</div>
)
}
我正在尝试显示一些反应错误消息并在 5 秒超时后隐藏它们。下面是代码:
import * as React from 'react'
import {ErrorInfo} from '../Twilio/api'
export const Error = ({type, message, visible}: ErrorInfo) => (
// visible=true,
setTimeout(function () {
visible = false
}, 5000),
visible ?
<div>
<p>
<strong>{type}:</strong> {message}
<br/>
<small>
UI version: <code>{GLOBAL_VERSION}</code>
</small>
</p>
</div> : <span/>
)
ErrorInfo
如下:
export type ErrorInfo = {
type: string
message: string
visible: boolean
}
但是,visible
被设置为未定义,因此不会显示错误消息。如果我在导出 Error
时将其设置为 true,则当 visible
变为 false 时,Header
元素不会删除它。
你应该使用状态。像这样:
export default function App() {
const [visible, setIsVisible] = React.useState(false);
setTimeout(function() {
setIsVisible(true);
}, 5000);
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
{visible && <p>Will show in 5 seconds</p>}
</div>
);
}
查看演示 here
您想要控制 Error
组件中的 visible
状态。
然后,您可以使用 useEffect
在 5 秒后隐藏错误(通过适当的清理)
export const Error = ({ type, message }: ErrorInfo) => {
const [visible, setVisible] = useState(false)
useEffect(() => {
// message is empty (meaning no errors). Adjust as needed
if(!message){
setIsVisible(false)
return
}
// error exists. Display the message and hide after 5 secs
setIsVisible(true)
const timer = setTimeout(() => {
setIsVisible(false)
}, 5000);
return () => clearTimeout(timer);
}, [message]) // executes every time `message` changes. Adjust as needed
if(!visible) return null
return (
<div>
<p>
<strong>{type}:</strong> {message}
<br />
<small>
UI version: <code>{GLOBAL_VERSION}</code>
</small>
</p>
</div>
)
}