Reactjs Redux操作创建者完成,更新订阅的组件

Reactjs Redux操作创建者完成,更新订阅的组件,reactjs,redux,rxjs,Reactjs,Redux,Rxjs,我的页面上有一个属性组件。它以模式打开,并更改redux存储中的属性,最显著的是要在搜索结果中显示的许多项。我还有一个名为Search的组件,它基本上使用redux存储来更新自己。我要解决的是,我需要知道number of items的操作创建者何时完成,通知我的搜索它已完成此操作,以便我可以使用new number of items变量执行搜索 在过去,我会使用ComponentWillReceiveProps并检查更改,但现在这一点已经消失,取而代之的是getDerivedStateFrom

我的页面上有一个属性组件。它以模式打开,并更改redux存储中的属性,最显著的是要在搜索结果中显示的许多项。我还有一个名为Search的组件,它基本上使用redux存储来更新自己。我要解决的是,我需要知道number of items的操作创建者何时完成,通知我的搜索它已完成此操作,以便我可以使用new number of items变量执行搜索

在过去,我会使用ComponentWillReceiveProps并检查更改,但现在这一点已经消失,取而代之的是getDerivedStateFromProps。这似乎是我可以走的一条路,但我也考虑过使用RXJS调用Observable,但我看不到任何例子可以实现我特别想要实现的(动作创建者已完成的通知)。有人有同样的问题吗?RXJS与getDerivedStateFromProps相比,哪种方法更好?我也在使用redux thunk,但我看不到一种方法可以以任何方式将订阅绑定到动作创建者。提前谢谢

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

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

发送完成后,我希望搜索组件更新。我不确定还需要多少代码

要将redux observable设置为应用程序中的中间件,请执行以下操作:

然后在你的根史诗中,你可以聆听你的行动:

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' })
);

据我所知,searchResultCount是否是发送到搜索框的一个道具,该道具在其构造函数中用作其状态?搜索组件是一个连接的组件,因此它知道searchResultCount中redux的道具中的更改。但除了检查getDerivedStateFromProps之外,它无法知道动作创建者何时完成。感觉很脏,我觉得用一些听者会更好。但是我找不到任何东西。如果你能发布一些示例代码…@Anas-我添加了动作创建者。不太确定你在寻找什么来提供正确的信息。我需要搜索组件收听action creator,一旦完成,我可以在另一个actionCreator中调用getSearchResults以获取redux中所需的值。我可能能够将有关当前搜索的详细信息传递到我的首选项中,然后,每当更新searchResultCount时,调用actionCreator以更新搜索结果,但这将加倍我的操作调用。可能有效,因为我总是希望在searchResultCount发生更改时更新该代码。此代码是否会在我的搜索组件中?另外,该中间件对redux thunk有什么影响?或者我应该用这个来代替redux thunk?希望不要重构我目前使用thunk的所有操作。这不会对您现有的redux thunk操作产生任何影响,您可以同时使用这两个中间件。您可以为您的redux可观察史诗创建一个单独的文件。请注意,如果您没有任何RxJS知识,那么使用redux observable并不容易,这是一条学习曲线。下面是一个示例应用程序,您可以检查如何使用redux observable:从示例代码中,我仍然看不到如何将其链接到项目中的组件。主项目中的组件与中间件调用没有任何关系?我仍然十分困惑。更多教程。刚刚在redux observable上观看了视频-似乎我忽略了动作输入和动作输出的概念。所有这些都发生在单个中间件文件中。现在更有意义了。