是否可以从react native中的另一个类组件访问useRef变量



我正试图访问类组件中函数组件中声明的useRef变量。这可能吗?目前,当我在下面的类组件FireMessage中导入函数组件DetailsScreen,并在get-db((函数中添加console.log(DetailsScreen.rereceiverUid(时,它返回"undefined"。你知道是什么原因导致的吗?我如何在类组件中访问这个变量?

**DetailsScreen**

import 'react-native-gesture-handler';
import { Image, StyleSheet, Text, TouchableOpacity, View, ScrollView, 
SafeAreaView, FlatList, Alert, TouchableHighlight, Platform, Dimensions, 
Linking} from 'react-native';
import React, {useState, useContext, useRef} from 'react';

const DetailsScreen = ({route, navigation}) => {
const receiverUid = useRef(route.params.key);
}

export default DetailsScreen;

**FireMessage**
import firebase from "firebase";
import firebaseConfig from './firebaseConfig.js';
import 'react-native-gesture-handler';
import * as React from 'react';
import DetailsScreen from './DetailsScreen.js';
class FireMessage {
constructor() {
this.init()
this.checkAuth() 
}
init = () => {
if (!firebase.apps.length && firebaseConfig.apps.length === 0) {
firebase.initializeApp({
apiKey: "xxxxxxxxxxx",
authDomain: "xxxxxxxxxxx",
databaseURL: "xxxxxxxxxx",
projectId: "xxxxxxxx",
storageBucket: "xxxxxxxxxx",
messagingSenderId: "xxxxxxxx",
appId: "xxxxxxxxxxx",
measurementId: "xxxxxxxxx"
});
}
};
checkAuth = () => {
firebase.auth().onAuthStateChanged(user => {
if (!user) {
firebase.auth().signInAnonymously();
}
});
};
send = messages => {
messages.forEach(item => {
const message = {
text: item.text,
timestamp: firebase.database.ServerValue.TIMESTAMP,
user: item.user
};
this.db.push(message)
});
};
parse = message => {
const { user, text, timestamp } = message.val();
const { key: _id } = message;
const createdAt = new Date(timestamp);

return {
_id,
createdAt,
text,
user
};
};
get = callback => {
this.db.on("child_added", snapshot => 
callback(this.parse(snapshot)));
};
off() {
this.db.off();
}
get db() {
console.log(DetailsScreen.receiverUid)
return firebase.database().ref("messages");
}
get uid() {
return (firebase.auth().currentUser || {}).uid;
}
}
export default new FireMessage();

无论何时更新receiverUid都会更新DetailsScreen.receiverUid

const newId = 'some-receiver-id'
receiverUid.current = newId
DetailScreen.receiverUid = newId

最新更新