自定义saga中的route push不会导致重新渲染

时间:2018-02-09 14:31:14

标签: admin-on-rest

我有一个自定义传奇,它响应简单的搜索用户操作,如果找到一个用户,它应该显示它,否则转到用户列表。

问题是,当我按下新路线时,我可以看到状态发生变化,但应用程序没有呈现新路线。我查看了源代码,无法找到任何更新阻止程序。

如果我执行两次推送操作,由于某种原因,只会导致位置键再次更改,应用程序会重新正确呈现。不知道在哪里继续寻找,所以对问题的看法是什么?

import { put, takeEvery, all, call } from "redux-saga/effects";
import { searchUser } from "../services/userService";
import { SEARCH_USER } from "../actions/searchUser";
import { showNotification } from "admin-on-rest";
import { push, replace } from "react-router-redux";

function* handleSearchUser(action) {
try {
    const { searchParam } = action.payload;
    const filter = {};
    if (isNaN(searchParam)) {
      filter.Email = searchParam;
   }  else {
      filter.UserId = parseInt(searchParam);
}
    const result = yield call(searchUser, 0, 25, filter);

    if (result && result.length === 1) {
      // Duplicate this row and the page re-renders the correct page
      yield put(push(`/User/${result[0].UserId}/show`));
    } else {
      yield put(
        push(
          `/User?filter=${JSON.stringify(
            filter
          )}&order=DESC&sort=id&page=1&perPage=25`
        )
      );
    }
  } catch (error) {
    console.error(error);
    yield put(showNotification("Error: error when searching", "warning"));
  }
}

export default function* searchUserSaga() {
  yield all([takeEvery(SEARCH_USER, handleSearchUser)]);
}

1 个答案:

答案 0 :(得分:0)

正在使用gatsbyjs。我切换到Create React App进行构建,所有问题都消失了。