mit*_*514 16 javascript jsx reactjs react-hooks react-functional-component
我为警报框编写了以下钩子:
import MuiAlert from '@material-ui/lab/Alert';
import { Snackbar } from '@material-ui/core';
import React from 'react';
export const useAlert = () => {
const [open, setOpen] = React.useState(false);
const [message, setMessage] = React.useState('');
const openAlert = (message) => {
setOpen(true);
setMessage(message);
};
const closeAlert = (event, reason) => {
setOpen(false);
};
return {
openAlert,
Alert: <Snackbar open={open} onClose={closeAlert}><MuiAlert onClose={closeAlert}>{ message }</MuiAlert></Snackbar>
};
};
Run Code Online (Sandbox Code Playgroud)
我将此钩子集成到其他功能组件中,如下所示:
import { useAlert } from './useAlert';
const Dashboard = () => {
const { openAlert, Alert } = useAlert();
return (
<div>{ Alert }</div>
)
};
Run Code Online (Sandbox Code Playgroud)
我知道从 React 钩子返回功能组件是不好的做法,因为钩子会在每次渲染时生成组件的新实例。
但是,在这里,我返回的是 JSX 元素而不是组件。这仍然是不好的做法吗?
Shu*_*tri 14
从自定义挂钩返回 JSX 是一种反模式。虽然它有效,但没有什么理由从自定义挂钩返回 JSX。
返回 JSX 的函数可以简单地转换为带有钩子的函数组件。将其写为组件将在很多方面为您提供帮助
useMemo| 归档时间: |
|
| 查看次数: |
12670 次 |
| 最近记录: |