当我在后台收到通知时,我尝试用apollo-hooks和react-native-firebase从服务器获取数据。
我创建了新的函数和registerHeadlessTask。
但它发生在Hooks can only be called inside the body of a function component.上
react-native: 0.59.8 react-native-firebase: 5.5.6 react-apollo-hooks: 0.4.5
我尝试使用react-apollo-hooks获取数据,但出现错误。而且,我得到了另一个上下文的自定义钩子,它也发生了Hooks can only be called inside the body of a function component.错误。
index.js:
...
AppRegistry.registerHeadlessTask('RNFirebaseBackgroundMessage', () => bgMessage)bgMessage.js:
export const bgMessage = message => {
const [mValue, setMValue] = useTest()
const {
data: { type },
} = message
switch (type) {
case 'Installing': {
setMValue(type)
displayedNotification(message, FCM_MESSAGES_STATUS.Message)
return Promise.resolve(message)
}
default:
displayedNotification(message, FCM_MESSAGES_STATUS.Message)
return Promise.resolve(message)
}
}
export const useTest = () => {
const [mValue, setMValue] = useState(null)
return [mValue, setMValue]
}这里有没有使用钩子的方法?
发布于 2019-08-29 21:57:02
你可以试试这个。
bgMessage.js
import React, { useState } from 'react';
...
export default async (message) => {
const [mValue, setMValue] = useState('')
const {
data: { type },
} = message
switch (type) {
case 'Installing': {
setMValue(type)
displayedNotification(message, FCM_MESSAGES_STATUS.Message)
return Promise.resolve(message)
}
default:
displayedNotification(message, FCM_MESSAGES_STATUS.Message)
return Promise.resolve(message)
}
}发布于 2021-01-15 15:19:57
Headless JS中不允许使用钩子。根据对这个问题的回答,issue钩子被视为UI元素,因此不允许在Headless JS中使用。
https://stackoverflow.com/questions/57708197
复制相似问题