首页 > 解决方案 > TypeError:未定义不是对象(评估'_this.getFcmToken')

问题描述

如何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')

标签: firebasereact-nativefirebase-cloud-messaging

解决方案


我建议像这样重写代码:

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]);
};

从您的错误消息看来,您尝试获取tokenfrom this。您要么async/await在设置之前尝试获取它的useEffect位置存在问题,要么在设置为状态之前尝试获取它的位置存在问题。我也不确定你想this在反应函数中使用哪里。他们没有this


推荐阅读