assistant-todo-mobile/src/pages/Bottom/index.js

99 lines
2.8 KiB
JavaScript
Raw Normal View History

2024-12-27 06:06:20 -05:00
import React, {FC, Fragment} from "react";
import {TabBar, FloatingBubble, Toast} from 'antd-mobile'
2023-01-18 07:57:54 -05:00
import WidthUseNavigate from './../WidthUseNavigate/index'
2023-01-12 08:47:39 -05:00
import {
2024-12-27 06:06:20 -05:00
AppOutline,
MessageOutline,
UnorderedListOutline,
UserOutline,
AddOutline,
2023-01-12 08:47:39 -05:00
} from 'antd-mobile-icons'
2024-12-27 06:06:20 -05:00
import "./index.css"
2023-01-18 07:57:54 -05:00
const tabs = [
2024-12-27 06:06:20 -05:00
{
2025-01-01 08:16:32 -05:00
key: '/home/treeTask',
2025-01-11 04:53:51 -05:00
title: '主子任务',
2024-12-27 06:06:20 -05:00
icon: <AppOutline/>,
badge: '1',
},
{
2025-01-01 08:16:32 -05:00
key: '/home/listTask',
2024-12-27 06:06:20 -05:00
title: '列表任务',
icon: <UnorderedListOutline/>,
badge: '2',
},
{
2025-01-01 08:16:32 -05:00
key: '/home/calTask',
2024-12-27 06:06:20 -05:00
title: '日历任务',
icon: <MessageOutline/>,
badge: '3',
},
{
key: '/home/me',
title: '我的',
icon: <UserOutline/>,
badge: '4',
},
2023-01-18 07:57:54 -05:00
]
2024-12-27 06:06:20 -05:00
class BottomInner extends React.Component {
2023-01-18 07:57:54 -05:00
state = {
2024-12-27 06:06:20 -05:00
// 默认选中的TabBar菜单项
selectedTab: this.props.useLocation
2023-01-12 08:47:39 -05:00
}
2023-01-18 07:57:54 -05:00
// 组件接收到新的props此处实际上是路由信息就会触发该钩子函数
componentDidUpdate(prevProps) {
2024-12-27 06:06:20 -05:00
// prevProps 上一次的props此处也就是上一次的路由信息
// this.props 当前最新的props此处也就是最新的路由信息
// 注意:在该钩子函数中更新状态时,一定要在 条件判断 中进行,否则会造成递归更新的问题
if (prevProps.useLocation !== this.props.useLocation) {
// 此时,就说明路由发生切换了
this.setState({
selectedTab: this.props.useLocation
})
}
}
setRouteActive = (value) => {
this.props.to(value)
2023-01-18 07:57:54 -05:00
this.setState({
2024-12-27 06:06:20 -05:00
selectedTab: value
2023-01-18 07:57:54 -05:00
})
}
2024-12-27 06:06:20 -05:00
onClick = () => {
// Toast.show('你点击了气泡')
this.props.to("/detail/addTask")
2023-01-18 07:57:54 -05:00
}
render() {
2024-12-27 06:06:20 -05:00
return <Fragment>
<FloatingBubble
axis='x'
magnetic='x'
style={{
'--initial-position-bottom': '80px',
'--initial-position-right': '24px',
'--edge-distance': '24px',
}}
onClick={this.onClick}
>
<AddOutline fontSize={32}/>
</FloatingBubble>
<TabBar activeKey={this.state.selectedTab} onChange={value => this.setRouteActive(value)}>
{tabs.map(item => (
<TabBar.Item key={item.key} icon={item.icon} title={item.title} badge={item.badge}/>
))}
</TabBar>
</Fragment>
2023-01-18 07:57:54 -05:00
}
2024-12-27 06:06:20 -05:00
}
export function PersonalCenter() {
return <div>pc端可访问:http://www.hauruyu.com</div>
}
2023-01-18 07:57:54 -05:00
// 使用高阶组件包裹当前类组件
const Bottom = WidthUseNavigate(BottomInner);
export default Bottom