ReactJS:React-Router传递值到另一个页面

时间:2020-06-25 08:27:04

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

我需要使用react-router将一个页面中的值传递给另一个页面。

我已经尝试过这种方式:

<li>
    <A 
      className="btn btn-link btn-sm"
      href={{ pathname: Routes.detail_page, search: `?_id=${C.Code}`, state: this.props.current  }}>
      { 'Open' }
    </A>
</li>

我会将this.props.current传递给详细信息页面。

在另一页中,如果我尝试在componentDidMount()中打印this.props.current,则结果不确定(当然,在第一页中,该值已参数化)。

constructor(props){
    super(props);
    this.state = {
    };
  }
componentDidMount(){
    let C = this.props.current
    console.log("C is: ", C) // this is undefined
    this.updateIsDeletableState()
  }

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您必须确保已在Route

中定义了URL参数。
// file-where-you-define-routes.js
...
<Switch>
  <Route path={`your-path/:id`} component={YourComponent} />
</Switch>
...

然后使用钩子useParams获取参数

function YourComponent() {
  const { id } = useParams();
  let C = id;
  console.log("C is: ", C) // this should be defined now
  ...
}

或者如果您使用类组件this.props.match.params.id

class YourComponent extends Component {
  ...
  componentDidMount(){
    let C = this.props.match.params.id; // match
    console.log("C is: ", C) // this should be defined now
    this.updateIsDeletableState()
  }
}