React native 在react native中,获取数据并在没有重复的情况下全局使用数据的最佳方式是什么?
我正在构建一个没有Redux的应用程序,我想知道从API获取数据并全局存储数据的最佳方式和最佳位置是什么,这样就可以针对每种情况在不同的视图中进行过滤、增强和显示?你可以这样做,因为它是一个数据获取库,可以进行获取、缓存,同步和更新服务器状态很容易React native 在react native中,获取数据并在没有重复的情况下全局使用数据的最佳方式是什么?,react-native,React Native,我正在构建一个没有Redux的应用程序,我想知道从API获取数据并全局存储数据的最佳方式和最佳位置是什么,这样就可以针对每种情况在不同的视图中进行过滤、增强和显示?你可以这样做,因为它是一个数据获取库,可以进行获取、缓存,同步和更新服务器状态很容易 import { QueryClient, QueryClientProvider, useQuery } from 'react-query' const queryClient = new QueryClient() expo
import { QueryClient, QueryClientProvider, useQuery } from 'react-query'
const queryClient = new QueryClient()
export default function App() {
return (
<QueryClientProvider client={queryClient}>
<FirstComponent />
<SecondComponent />
</QueryClientProvider>
)
}
function FirstComponent() {
// fetch some data
const { isLoading, error, data } = useQuery('myData', fetchData)
if (isLoading) return 'Loading...'
if (error) return 'An error has occurred: ' + error.message
return (
<div>
<h1>{data.name}</h1>
<p>{data.description}</p>
</div>
)
}
function SecondComponent() {
const queryClient = useQueryClient()
const invalidateData = () => {
// invalidate data, will trigger a refetch in FirstComponent
queryClient.invalidateQueries('myData')
}
return (
<div>
<button onClick={invalidateData}>
Click me to refetch data !
</button>
</div>
)
}
从'react query'导入{QueryClient,QueryClientProvider,useQuery}
const queryClient=new queryClient()
导出默认函数App(){
返回(
)
}
函数FirstComponent(){
//获取一些数据
const{isLoading,error,data}=useQuery('myData',fetchData)
如果(正在加载)返回“正在加载…”
如果(错误)返回“发生错误:”+错误消息
返回(
{data.name}
{data.description}
)
}
函数SecondComponent(){
const queryClient=useQueryClient()
常量无效数据=()=>{
//使数据无效,将在FirstComponent中触发重新蚀刻
queryClient.invalidateQueries('myData')
}
返回(
单击我重新蚀刻数据!
)
}
您可以使用AsyncStorage,它类似于浏览器中的localStorage,您可以将其用作以下代码:
yarn add @react-native-async-storage/async-storage
import AsyncStorage from '@react-native-async-storage/async-storage';
// store item
const storeData = async (value) => {
try {
await AsyncStorage.setItem('@storage_Key', value)
} catch (e) {
// saving error
}
}
// get item
const getData = async () => {
try {
const value = await AsyncStorage.getItem('@storage_Key')
if(value !== null) {
// value previously stored
}
} catch(e) {
// error reading value
}
}