类型错误:未定义不是对象(评估“_this.getFcmToken”)

时间:2021-07-17 14:43:48

标签: firebase react-native firebase-cloud-messaging

如何从 fcm token 中的 firebase 获取 react-native。目前我正在使用这些包

@react-native-firebase/app
@react-native-firebase/messaging

我的代码

const RegisterScreen = (props) => {
  const [fcmToken, setfcmToken] = useState();
  
  useEffect(() => {
    
    messaging()
    .getToken()
    .then(token => {
      return saveTokenToDatabase(token);
    });
 
  }, []);
async function saveTokenToDatabase(token) {
  
  console.log(token)
}
}

当任何用户注册 react native 时,我想从 firebase 获取 fcm 令牌,但它给了我这个错误

TypeError: undefined is not an object (evaluating '_this.getFcmToken')

1 个答案:

答案 0 :(得分:0)

我建议像这样重写代码:

const RegisterScreen = async (props) => {
  const [fcmToken, setfcmToken] = useState();

  useEffect(() => {
    messaging()
      .getToken()
      .then((token) => {
        return setfcmToken(token);
      });
  }, []);

  async function saveTokenToDatabase(token) {
    console.log(token);
  }

  useEffect(() => {
    if (fcmToken) {
      saveTokenToDatabase(fcmToken);
    }
  }, [fcmToken]);
};

从您的错误消息来看,您似乎试图从 token 获取 this。您要么遇到 async/await 的问题,在您设置它之前尝试获取它,要么遇到 useEffect 的问题,您也可以在将其设置为状态之前尝试获取它。我也不确定您想在反应函数中的何处使用 this。他们没有this