react hooks 使用实例


react hooks 使用实例

使用Suspense 和lazy实现模块懒加载功能

1
2
3
4
5
6
7
8
9
import React, {Suspense, lazy} from 'react';
const HomePage = lazy(() => {
import('./modeles/home');
});
<Suspense fallback={<div>加载中...</div>}>
<Switch>
Route path="/home" component={HomePage} />
</Switch>
</Suspense>

使用React Hooks 实现一个自定义的组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
export const useModal = (initTitle: string, initContent: string | React.Element) => {
const [visible, setVisible] = useState(false);
const [title, setTitle] = useState(initTitle);
const [content, setContent] = useState(initContent);
const CustomModal = () => {
return (
<Modal
visible={visible}
title={title}
closable={false}
footer={null}>
{content}
</Modal>
)
}
const show = (content?: string | React.ReactElement) => {
content && setContent(content);
setVisible(true);
}
const hide = (delay?: number) => {
if(delay) {
setTimeout(() => setVisible(false), delay);
} else {
setVisible(false)
}
}
return {
show, hide, CustomModal, setTitle, setContent
}

}

使用:

1
2
3
4
const {hide, show, CustomModal} = useModal('系统提示''正在初始化...');
render() {
<div><CusomModal /></div>
}