Redux动作创建者完成,更新了订阅的组件

时间:2018-08-21 14:12:35

标签: reactjs redux rxjs

我的页面上有用于属性的组件。它以模式形式打开,并更改redux存储中的属性,尤其是要在搜索结果中显示的许多项目。我还有一个名为Search的组件,该组件基本上使用redux存储进行自我更新。我正在努力的是,我需要知道项目数量的操作创建者何时完成,通知搜索它已完成此操作,因此我可以使用新的项目数量变量执行搜索。

过去,我将使用componentWillRecieveProps并仅检查更改,但这已不再支持getDerivedStateFromProps。这似乎是我可以采取的一种方式,但是我也考虑过使用RXJS调用可观察对象,但是我看不到任何示例可以完成我特意试图完成的工作(通知动作创建者已完成)。有人遇到同样的问题吗? RXJS与getDerivedStateFromProps是哪种更好的选择?我也在使用redux-thunk,但是我看不到以任何方式将订阅绑定到动作创建者的方法。提前致谢。

编辑:示例代码 动作创建者:

export function setNumRecords(val){
    return dispatch => {
        localStorage.setItem('numRecords', val);
        dispatch({type: 'SET_NUM_RECORDS', numRecords:val})
    };
}

调度完成后,我想更新搜索组件。我不确定还需要多少代码。

1 个答案:

答案 0 :(得分:1)

要在您的应用中设置可观察为中间件的redux:

https://redux-observable.js.org/docs/basics/SettingUpTheMiddleware.html

然后在您的根史诗中,您可以聆听您的动作:

import { ofType } from 'redux-observable';
import {
  tap,
  mapTo,
} from 'rxjs/operators';

const setNumRecordsEpic = action$ => action$.pipe(
    ofType('SET_NUM_RECORDS'),
    tap(() => console.log('Here...'))
    mapTo({ type: 'SOME_OTHER_ACTION' })
);