Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 在react native中,获取数据并在没有重复的情况下全局使用数据的最佳方式是什么?_React Native - Fatal编程技术网

React native 在react native中,获取数据并在没有重复的情况下全局使用数据的最佳方式是什么?

React native 在react native中,获取数据并在没有重复的情况下全局使用数据的最佳方式是什么?,react-native,React Native,我正在构建一个没有Redux的应用程序,我想知道从API获取数据并全局存储数据的最佳方式和最佳位置是什么,这样就可以针对每种情况在不同的视图中进行过滤、增强和显示?你可以这样做,因为它是一个数据获取库,可以进行获取、缓存,同步和更新服务器状态很容易 import { QueryClient, QueryClientProvider, useQuery } from 'react-query' const queryClient = new QueryClient() expo

我正在构建一个没有Redux的应用程序,我想知道从API获取数据并全局存储数据的最佳方式和最佳位置是什么,这样就可以针对每种情况在不同的视图中进行过滤、增强和显示?

你可以这样做,因为它是一个数据获取库,可以进行获取、缓存,同步和更新服务器状态很容易

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
  }
}