Files
xinlong-shop-taro/src_bak/app.tsx
赵忠林 1fa58040f3 feat(user): 新增收货地址管理及售后申请页面
- 新增地址类型定义,增强前端地址数据结构
- 新增地址编辑页面,支持地址智能识别和定位选点功能
- 地址编辑支持省市区选择及默认地址设置
- 新增地址列表页面,支持地址展示、删除、编辑和选择功能
- 实现售后申请页面,支持选择售后类型和退款原因
- 售后申请支持商品选择、退款金额计算和凭证上传
- 新增售后详情页面,支持售后状态展示及申请取消
- 优化页面加载和用户交互体验,增加错误提示和权限处理
2026-07-01 12:11:56 +08:00

57 lines
1.6 KiB
TypeScript

import React, { useState } from 'react'
import Taro, { useLaunch, useDidShow, useDidHide, getSystemInfoSync } from '@tarojs/taro'
import { View } from '@tarojs/components'
import { ConfigProvider } from '@nutui/nutui-react-taro'
import zhCN from '@nutui/nutui-react-taro/dist/locales/zh-CN'
import AppContext from './contexts/AppContext'
import { UserProvider } from './contexts/UserContext'
import { CartProvider } from './contexts/CartContext'
import ErrorBoundary from './components/ErrorBoundary'
import './app.scss'
type AppProps = {
children?: React.ReactNode
}
function App(props: AppProps) {
const [theme, setTheme] = useState<'light' | 'dark'>('light')
useLaunch(() => {
const systemInfo = getSystemInfoSync()
const savedTheme = Taro.getStorageSync('app_theme')
if (savedTheme === 'light' || savedTheme === 'dark') {
setTheme(savedTheme)
}
})
useDidShow(() => {})
useDidHide(() => {})
const toggleTheme = () => {
setTheme(prev => {
const next = prev === 'light' ? 'dark' : 'light'
try { Taro.setStorageSync('app_theme', next) } catch { /* ignore */ }
return next
})
}
return (
<AppContext.Provider value={{ theme, toggleTheme }}>
<UserProvider>
<CartProvider>
<ConfigProvider locale={zhCN}>
<ErrorBoundary>
<View className={theme === 'dark' ? 'dark' : ''}>
{props.children}
</View>
</ErrorBoundary>
</ConfigProvider>
</CartProvider>
</UserProvider>
</AppContext.Provider>
)
}
export default App