- 新增地址类型定义,增强前端地址数据结构 - 新增地址编辑页面,支持地址智能识别和定位选点功能 - 地址编辑支持省市区选择及默认地址设置 - 新增地址列表页面,支持地址展示、删除、编辑和选择功能 - 实现售后申请页面,支持选择售后类型和退款原因 - 售后申请支持商品选择、退款金额计算和凭证上传 - 新增售后详情页面,支持售后状态展示及申请取消 - 优化页面加载和用户交互体验,增加错误提示和权限处理
57 lines
1.6 KiB
TypeScript
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
|