React重定向到没有构造函数的页面

时间:2018-01-24 13:46:17

标签: reactjs react-router

我的react应用程序中有一个页面声明了一些JavaScript函数。它的结构如下:

import { api } from "events";

function call() {
//.Do something
}

在其中一个功能中,我想重定向到特定页面。

如果我的网页结构如下:

import React from "react";

export default class reactPage extends React.Component {
  constructor() {
    super();


  }

  render() {
}
}

我会重定向到这样的页面:

this.props.router.push({
    pathname: '/pageName
})

但由于我的网页没有反应导入或构造函数,我无法访问props

我的问题是,有没有办法可以从我的函数中获取当前页面的props对象?

我知道我可以使用Javascript重定向,但是这会松掉所有状态和道具,所以不是我想做的事情。

我知道还有其他方法可以做到这一点,但我特别询问一个重定向,它将维护我的所有状态和道具,最好不要重新加载页面。

2 个答案:

答案 0 :(得分:1)

如果要在React组件内部调用此函数,那么我认为我会将历史作为附加参数传递到需要它的函数中。这样,您仍然可以拨打history.push('/')或任何您需要去的地方。在调用该函数时,您只需要记住传入历史记录。

答案 1 :(得分:1)

如果我理解正确,那么你可以通过props& path将该函数作为参数:

function redirectMeToSomewhere(props, path){
  const data = {...}
  // doing some work
  // collecting data
  // and then redirect
  props.router.push({
    pathname: path,
    search: '?query=abc',
    state: { detail: data }
  })
}

// somewhere in component
...
redirectMeToSomewhere(this.props, 'stackoverflow.com')
...

它对你有用吗?