如何在 React 组件之外写入 Redux 存储?
How to write to Redux store outside of a React component?
我有一个 React Native 应用程序,我在其中使用 HeadlessJS 在收到 Firebase 云消息传递通知时调用处理程序。
在我的处理程序中,它是一个函数,而不是 React 组件,我正在使用以下方法访问 Redux 存储:
import store from '../redux/store';
const backgroundNotificationHandler = async message => {
const state = store.getState();
...
我的问题是,我如何才能以非 'hack' 的方式更新商店?
目前我在函数中有以下行:
state.user.wokenFromBackgroundListener = true;
令人惊讶的是,这是有效的,但这是在没有分派动作或使用减速器的情况下。
有更好的方法吗?
我无法分派操作,因为该函数不是组件,也不是组件,因为它不能 - 它需要一个函数,如 docs.
我在 index.js 中的代码是:
AppRegistry.registerComponent(appName, () => App);
firebase.messaging().setBackgroundMessageHandler(backgroundNotificationHandler);
从组件 props 调度只是 react-redux. You can still use plain redux api, in this case you can dispatch to store using store.dispatch
提供的附加功能
store.dispatch({ type: 'SOME_ACTION', payload: [1,2,3] })
但是我不确定你是否应该这样做,我自己没有使用过 HeadlessJS,但我会首先检查并确保这些任务处理程序实际上 运行 在你的相同上下文中应用 运行ning(例如,确认他们与您的应用共享商店实例,而不是仅仅因为您使用处理程序将商店导入文件就创建单独的商店)
我有一个 React Native 应用程序,我在其中使用 HeadlessJS 在收到 Firebase 云消息传递通知时调用处理程序。
在我的处理程序中,它是一个函数,而不是 React 组件,我正在使用以下方法访问 Redux 存储:
import store from '../redux/store';
const backgroundNotificationHandler = async message => {
const state = store.getState();
...
我的问题是,我如何才能以非 'hack' 的方式更新商店?
目前我在函数中有以下行:
state.user.wokenFromBackgroundListener = true;
令人惊讶的是,这是有效的,但这是在没有分派动作或使用减速器的情况下。
有更好的方法吗?
我无法分派操作,因为该函数不是组件,也不是组件,因为它不能 - 它需要一个函数,如 docs.
我在 index.js 中的代码是:
AppRegistry.registerComponent(appName, () => App);
firebase.messaging().setBackgroundMessageHandler(backgroundNotificationHandler);
从组件 props 调度只是 react-redux. You can still use plain redux api, in this case you can dispatch to store using store.dispatch
提供的附加功能store.dispatch({ type: 'SOME_ACTION', payload: [1,2,3] })
但是我不确定你是否应该这样做,我自己没有使用过 HeadlessJS,但我会首先检查并确保这些任务处理程序实际上 运行 在你的相同上下文中应用 运行ning(例如,确认他们与您的应用共享商店实例,而不是仅仅因为您使用处理程序将商店导入文件就创建单独的商店)