如何在React Native中访问类之外的类的状态变量?

时间:2019-10-07 12:34:55

标签: react-native

我在屏幕类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方法访问状态的afteraddUFInput变量。我尝试创建静态方法getBeforegetAfter来返回状态,但是由于static函数无法访问状态,这些方法不起作用。

1 个答案:

答案 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
    });

  }
};