首先,我想调用操作“ CLICK_SEARCH”以获取服务器的响应 然后将响应传递给“ CLICK_SEARCH2”以更新商店。
但是它失败了,控制台结果显示为“ CLICK_SEARCH”而不是“ CLICK_SEARCH2”,并且action.payload是未定义的。有人帮忙吗?
RecyclerView normalImageDisplay=layout.findViewById(R.id.recycler_view);
normalImageDisplay.setAdapter(new NewsSlidingFullImageAdapter(context,nhBean.getImageUrl()));
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false)
{
@Override
public boolean canScrollVertically() {
return false;
}
};
normalImageDisplay.setLayoutManager(mLayoutManager);
SnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(normalImageDisplay);
答案 0 :(得分:0)
您是否尝试过声明动作类型的常量?就这么简单:
const CLICK_SEARCH = 'CLICK_SEARCH';
const CLICK_SEARCH2 = 'CLICK_SEARCH2';
function reducreForSeach(state = initialState3, action) {
//...other parts of the code
switch(action.type) {
case CLICK_SEARCH: {
//...
dispatch({ type: CLICK_SEARCH2,
//...
case CLICK_SEARCH2: {
//...
答案 1 :(得分:0)
dispatch
从未定义或馈送到函数reducreForSeach
,因此它将始终无法调用CLICK_SEARCH2。
Redux不直接支持连锁动作。您可以自己实现,但我建议您研究redux-thunk或redux-saga之类的流行库,以了解如何根据其他操作的结果来调用操作。它们都有详细的记录,并在Redux's official website
中推荐答案 2 :(得分:0)
您不想在化简器中做这些事情,因为它们本来就是纯函数。
您可以使用redux-thunk
从动作生成器中调度其他动作,这使您能够从动作生成器返回函数。
返回的函数将以dispatch
作为道具被调用,并允许您从回调内部进一步调度动作。
例如
export const mySearchActionGenerator = keyword => dispatch => {
dispatch ({
type: actionTypes.MY_SEARCH_ACTION
keyword
});
dispatch ({
type: actionTypes.MY_SEARCH_ACTION
keyword
});
}
另一种选择是使用redux-saga
,它允许进行更复杂的设置。