我在屏幕类addUFInput
之外有一个方法UltrafiltrationScreen
,我叫该方法将一些输入存储到Firebase FireStore中。这些输入以UltrafiltrationScreen
的状态存储,并由用户使用输入滑块设置:
export default class UltrafiltrationScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
before: 60, after: 60
}
export const addUFInput = () => {
const user = firebase.auth().currentUser;
if (user != null) {
const uid = user.uid;
const db = firebase.firestore();
const timestamp = Date.now();
const UFRef = db.collection('users').doc(uid).collection('Ultrafiltration').doc(timestamp.toString());
UFRef.set({
before: UltrafiltrationScreen.getBefore(),
after: UltrafiltrationScreen.getAfter(),
timestamp
});
}
};
我不确定如何从我的before
方法访问状态的after
和addUFInput
变量。我尝试创建静态方法getBefore
和getAfter
来返回状态,但是由于static
函数无法访问状态,这些方法不起作用。
答案 0 :(得分:1)
使用Async Storage存储数据,然后在函数中进行检索。
示例代码:
storeUltrafiltrationValues = async()=>{
const {before,after}=this.state;
AsyncStorage.setItem('Ultrafiltration', JSON.stringify({before,after}))
}
在addUFInput函数中
export const addUFInput = async() => {
const user = firebase.auth().currentUser;
if (user != null) {
const uid = user.uid;
const db = firebase.firestore();
const timestamp = Date.now();
const data=JSON.parse(await AsyncStorage.getItem('UltrafiltrationScreen'));
const UFRef = db.collection('users').doc(uid).collection('Ultrafiltration').doc(timestamp.toString());
UFRef.set({
before: data.before,
after: data.after,
timestamp
});
}
};