This commit is contained in:
oneao committed 2025-10-30 22:54:45 +08:00
1 parent 2aa2b513eb
commit 200f72eb86
7 files changed
+316 -87

No files matched your search

+93
View File
@@ -700,6 +700,99 @@ lottie例子网站:https://lottiefiles.com/free-animations
## 集成zustand和@react-native-async-storage
安装依赖:
```bash
npx expo install zustand
npx expo install @react-native-async-storage/async-storage
```
使用demo:
```ts
// store/userStore.ts
import AsyncStorage from '@react-native-async-storage/async-storage'
import { create } from 'zustand'
import { createJSONStorage, persist } from 'zustand/middleware'
interface UserState {
userInfo: { userId: string, username: string } | null
token: string | null
setUserInfo: (userInfo: UserState['userInfo']) => void
setToken: (token: string) => void
logout: () => void
}
export const useUserStore = create<UserState>()(
persist(
(set, get) => ({
userInfo: null,
token: null,
setUserInfo: userInfo => set({ userInfo }),
setToken: token => set({ token }),
logout: () => {
console.log('当前 token:', get().token) // 使用 get 获取最新状态
set({ userInfo: null, token: null })
},
}),
{
name: 'user-storage', // 存储在 AsyncStorage 的 key
storage: createJSONStorage(() => AsyncStorage),
},
),
)
```
```tsx
// App.tsx
import React, { useEffect } from 'react'
import { Button, Text, View } from 'react-native'
import { useUserStore } from '@/store/userStore'
export default function App() {
const { userInfo, token, setUserInfo, setToken, logout } = useUserStore()
// 模拟 App 启动后读取状态
useEffect(() => {
console.log('用户信息:', userInfo)
console.log('Token:', token)
}, [userInfo, token])
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>
User Info:
{userInfo ? userInfo.username : '未登录'}
</Text>
<Text>
Token:
{token || '无'}
</Text>
<Button
title="登录"
onPress={() => {
setUserInfo({ userId: '1', username: '张三' })
setToken('abc123')
}}
/>
<Button
title="退出登录"
onPress={() => {
logout()
}}
/>
</View>
)
}
```
## 配置深度链接
作用:通过链接就可以跳转到该app。