我有一个React Native应用程序,在收到Firebase云消息通知时,我使用HeadlessJS调用处理程序。
在我的处理程序中,它是一个函数,而不是React组件,我使用以下方法访问Redux存储:
import store from '../redux/store';
const backgroundNotificationHandler = async message => {
const state = store.getState();
...
我的问题是,我如何才能以一种不是"黑客"的方式更新商店?
目前我在功能中有以下行:
state.user.wokenFromBackgroundListener = true;
令人惊讶的是,它是有效的,但这并没有调度一个操作或使用一个reducer。
有更好的方法吗?
我不能调度一个操作,因为函数不是组件,也不是组件,因为它不可能——它需要文档中的函数。
我在index.js中的代码是:
AppRegistry.registerComponent(appName, () => App);
firebase.messaging().setBackgroundMessageHandler(backgroundNotificationHandler);
从组件道具进行调度只是react redux提供的一个附加功能。您仍然可以使用普通的redux-api,在这种情况下,您可以使用store.dispatch 将其发送到商店
store.dispatch({ type: 'SOME_ACTION', payload: [1,2,3] })
然而,我不确定你是否应该这样做,我自己还没有使用HeadlessJS,但我会首先检查并确保这些任务处理程序实际上是在你的应用程序运行的同一上下文中运行的(例如,确认它们与你的应用程序共享存储实例,而不是因为你使用处理程序在文件中导入存储而创建单独的存储(