React JS:以编程方式使用React-Router发送道具

时间:2017-11-19 13:14:11

标签: reactjs react-router react-router-v4 react-router-dom

这个问题试图解决的问题很简单:

“我可以以编程方式将道具从一个场景发送到另一个场景,如果是,怎么样?”

下面我提供了一组示例代码,希望有人能够一劳永逸地知道这一点。

App.js文件:

const Main = () => (
    <main>
        <Switch>
            <Route exact path='/Job' component={Job}/>
            <Route path='/Preview' component={Preview}/>
        </Switch>
    </main>

Job.js:

长话短说,一旦用户点击提交,文件就会输入和输出,此功能称为:

 handleClick(){
    //The state I wish to pass: this.state.propToPass
    //my current implementation for moving to the correct scene:
    this.props.history.push('/Preview')

}

Preview.js

constructor(props){
    super(props)
    //console.log(the prop that has been sent)
}

对任何理解这个问题的人都会永远满意,并且可以解释我的困境。

非常感谢。

2 个答案:

答案 0 :(得分:3)

以下是withRouter的示例。它是一个更高阶的函数,它返回连接了路由器的子组件,因此您可以通过编程方式切换路由。

通过发送对象而不仅仅是字符串来转移答案。您可以通过在名为state的对象中附加属性来指定要作为状态发送的数据,该对象将包含您要发送的数据。

&#13;
&#13;
import React from 'react';
import {withRouter} from 'react-router-dom';

class Test extends React.Component {
  _handleClick = () => {
    this.props.history.push({
      pathname: '/roster',
      state: {
        'hello': 'world',
      }
    });
  }
  render() {
    return (
      <button onClick={this._handleClick}>Go To Roster Programmatically</button>
    )
  }
}

export default withRouter(Test);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我强烈建议使用redux-form,因为它使用reducer来保存表单的状态。然后,在路由到所需组件后,您可以将该组件连接到表单状态以获取所需的信息。 它是一个功能强大的工具,可以帮助您管理表单的状态,听起来就像您需要的那样。