Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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
Javascript 协助在聊天应用程序上实现缓存_Javascript_React Native_Google Cloud Firestore_Expo_Asyncstorage - Fatal编程技术网

Javascript 协助在聊天应用程序上实现缓存

Javascript 协助在聊天应用程序上实现缓存,javascript,react-native,google-cloud-firestore,expo,asyncstorage,Javascript,React Native,Google Cloud Firestore,Expo,Asyncstorage,我正在尝试将来自firebase的消息保存到缓存中,然后flatlist将从缓存中获取数据。我有一个名为cache的组件,它具有存储和获取功能,它正在工作,因为我在不同的屏幕上使用它来存储数据 这是从firebase获取数据的函数 const [messages, setMessages] = useState([]); useEffect(() => { var unsubscribe; if (currentUser)

我正在尝试将来自firebase的消息保存到缓存中,然后flatlist将从缓存中获取数据。我有一个名为cache的组件,它具有存储和获取功能,它正在工作,因为我在不同的屏幕上使用它来存储数据

这是从firebase获取数据的函数

const [messages, setMessages] = useState([]);

useEffect(() => {

        var unsubscribe;
        
        if (currentUser)
        {
            unsubscribe = db
            .collection("chats")
            .doc(currentUser.uid)
            .collection("messages")
            .orderBy("timestamp", "asc")
            .onSnapshot((snapshot) => {

                setMessages(snapshot.docs.map(doc => ({
                    message: doc.data().message,
                    timestamp: doc.data().timestamp.toDate(),
                    sender: doc.data().sender,
                    id: doc.id,
                })))
            });
        }
        return unsubscribe;
    }, [currentUser])
这是从缓存中存储和获取数据的函数

const [cachedMessages, setCachedMessages] = useState(null);

useEffect(() => {
   async () => {
      await cache.store(cacheKeys.MESSAGES, messages);
    
      const data = await cache.get(cacheKeys.MESSAGES);
    
      setCachedMessages(data);
      }
   }, [messages])

有什么问题?什么不起作用?是否检查是否每次调用cache.store?看起来您声明了一个匿名lambda,但从未调用它。屏幕上没有显示任何内容。由于某些错误,虽然使用React Native Debugger,但我无法看到缓存,但我确信缓存组件正在工作。如果问题是没有显示任何内容,请向我们演示如何显示您的状态?另外,您可能希望尝试
const fn=async()=>{…};fn()
不调用匿名lambda是lols的问题。谢谢我真的不太明白lambda的表达方式