【问题标题】:How to redirect to a component page from redux actions如何从 redux 操作重定向到组件页面
【发布时间】:2021-02-02 12:20:07
【问题描述】:

我在我的 web-app 中使用 react 和 redux。所以我被卡住的场景是,单击按钮时,我正在调用我正在调用 API 的 redux 操作 js,然后在块中我已经编写了条件,如果这些通过,那么我需要重定向到差异页面但我不必只更改我需要呈现的不同组件的页面的 URL。我为此使用下面的代码,但似乎控制永远不会从操作中进入我的组件。

动作JS

export function fetchData(data) {
  return function (dispatch) {
    let request = apiRequest(data);
    
    return fetchAPICall(request).then(resp => {
      
      if( resp.data.id==1){
         <OtherComp  data={data} />
      }
    }).catch(error => {
      throw error;
    })
  }
}

获取API调用js

export function fetchAPICall(body) {
  return fetch(SomeURL {
    headers: headerSchema,
    method: "POST",
    body: JSON.stringify(body)
  })
    .then(handleResponse)
    .catch(handleError);
}

OtherComp 只是一个示例静态组件,控件根本不转到该组件。有人可以建议我哪里出错了吗?

【问题讨论】:

  • 您想在resp.data.id==1 的条件下更改路线,对吗?
  • @yahyaparvar 是的,但我不想更改 url,所以我猜浏览器历史推送将不起作用。
  • 分配一个布尔变量,并在条件下使其为真/假,然后在要显示条件的组件处,检查布尔变量是否为真
  • 我并没有完全理解您的建议,我已经在 if 条件中调用了该组件。但问题是它实际上并没有被调用。
  • 我知道你想做什么,你不应该直接在操作中返回一个组件,而是你应该在减速器中分配一个变量,并在父组件中有条件地更改组件,这也是关于 @ 987654324@ 还有,我可以看看你的减速器和你调用动作的组件吗?我也可以知道你想要实现的概念吗? OtherComp 是加载指示器还是显示动作参数的组件?

标签: javascript reactjs redux react-redux


【解决方案1】:

试试这个

npm install --save 历史记录

在我的项目中,我在 index.js 中初始化浏览器历史记录:

import { createBrowserHistory } from 'history';

export const browserHistory = createBrowserHistory();

在动作中重定向:

export function fetchData(data) {
  return function (dispatch) {
    let request = apiRequest(data);
    
    return fetchAPICall(request).then(resp => {
      
      if( resp.data.id==1){
          browserHistory.push('/pathToRedirect')
      }
    }).catch(error => {
      throw error;
    })
  }
}

【讨论】:

  • 我不想更改 URL,我想渲染另一个组件但没有更改 URL。
  • @shubham 然后将您的数据保存在 redux 中,此检查 isApiDataReceived (true/false) 以及您调度 fetchData 操作并希望在视图中显示此检查 isApiDataReceived 如果收到数据然后呈现如果不是,则此 OtherComp 为空白
猜你喜欢
  • 2016-09-16
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 2019-02-01
  • 2012-10-10
  • 2020-04-20
相关资源
最近更新 更多