0

我有一个 React App 作为 Wordpress 存储库中的子模块。React App 负责库存及其所有页面,而 Wordpress 负责所有其他页面。

我有一个获取库存详细信息的传奇功能。如果没有响应,我想将其重定向到另一个页面。yield put(push('/sales'). 问题是这个页面存在于 Wordpress 上,而不是我的 React 应用程序上。因此,当执行此操作时,它会尝试在 react 中查找路由,但没有找到,然后转到 404 页面。但是,当我刷新时,它会加载 Wordpress 页面。我尝试在里面添加一个绝对 URL yield put(push(URL)),但它发送给我一个无限重定向循环。我想知道是否可以仅重定向到 redux 传奇中的 Wordpress 页面。

function* requestInventoryDetails(action) {
  try {
    if (response && response.stockNumber) {
      .
      .
      .
    } else {
      yield put(push('/sales'))
      // window.location.reload()
    }
  } catch (err) {
    yield put(SET_ERROR('There was an error retrieving the inventory details'))
    throw err
  }
}
4

1 回答 1

2

如果您在 react 应用程序之外导航,也许会这样做window.location.assign(absoluteUrl);?不需要涉及您的普通 redux 路由器。如果你想让事情保持可测试性,你可以把它放在一个单独的函数中,这样它就可以在你的 saga 测试中被模拟。

function navigateToExternalPage(url) {
    window.location.assign(url);
}

function* requestInventoryDetails(action) {
  try {
    if (response && response.stockNumber) {
      .
      .
      .
    } else {
      yield call(navigateToExternalPage, externalUrl);
    }
  } catch (err) {
    yield put(SET_ERROR('There was an error retrieving the inventory details'))
    throw err
  }
}
于 2019-09-16T21:39:32.797 回答