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
|