Ошибка типа: неопределенный не является объектом (оценка ‘_this.getFcmToken’)

# #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)
}
}
 

Я хочу получить токен fcm от firebase, когда любой пользователь регистрируется в react native, но это выдает мне эту ошибку

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

Ответ №1:

Я бы рекомендовал переписать код следующим образом:

 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 функцию react. У них этого нет this .