📜  如何在 ReactJS 中获取多个缓存数据?

📅  最后修改于: 2022-05-13 01:56:32.517000             🧑  作者: Mango

如何在 ReactJS 中获取多个缓存数据?

我们可以在 ReactJS 中使用以下方法来获取多个缓存数据。我们可以从浏览器获取多个缓存数据,并在需要时在我们的应用程序中使用它们。缓存是一种技术可以帮助我们将给定资源的副本存储到浏览器中,并在请求时将其返回。

方法:按顺序执行这些简单的步骤 要得到 ReactJS 中的多个缓存数据。我们创建了getMultipleCacheData函数,该函数获取缓存名称并从浏览器缓存中获取其数据。当我们点击按钮时,该函数被触发并从缓存中获取数据。在下面的示例中,我们尝试从浏览器中获取名为 CacheOne 和 CacheFour 的多个缓存数据,该浏览器有五个缓存,分别名为 CacheOne、CacheTwo、CacheThree、CacheFour 和 CacheFive,如下所示:

创建反应应用程序:

  • 第 1 步:使用以下命令创建一个 React 应用程序:

    npx create-react-app foldername
  • 第 2 步:创建项目文件夹(即文件夹名称)后使用以下命令移动到该文件夹:

    cd foldername

项目结构:它将如下所示。

项目结构

App.js:现在在App.js文件中写下以下代码。在这里,App 是我们编写代码的默认组件。

Javascript
import * as React from 'react';
  
export default function App() {
  
  // Our state to store fetched cache data
  const [cacheData, setCacheData] = React.useState();
  
  // Function to get multiple cache data
  const getMultipleCacheData = async (cacheNames) => {
    if (typeof caches === 'undefined') return false;
  
    var cacheDataArray = []
    for (var i = 0; i < cacheNames.length; i++) {
  
      const cacheStorage = await caches.open(cacheNames[i].cacheName);
      const cachedResponse = await cacheStorage.match(cacheNames[i].url);
  
      // If no cache exists
      if (!cachedResponse || !cachedResponse.ok) {
        cacheDataArray[i] = `Unable to fetch ${cacheNames[i].cacheName}`
      } else {
        var data = await cachedResponse.json()
        cacheDataArray[i] = data
      }
    }
  
    // Putting commas in between caches data
    // to display properly
    setCacheData(cacheDataArray.join(', '))
  };
  
  // Caches names which has to be fetched from browser 
  const cachesToFetch = [
    { cacheName: 'CacheOne', url: 'https://localhost:300' },
    { cacheName: 'CacheFour', url: 'https://localhost:300' }
  ]
  
  return (
    
      

How to get multiple cache data in ReactJS?

       
      
Multiple Cache Data is: {cacheData}
    
  ); }


运行应用程序的步骤:从项目的根目录使用以下命令运行应用程序:

npm start

输出:现在打开浏览器并转到http://localhost:3000/ ,您将看到以下输出: