React-Router:使用 Navlink 将 props 从一个组件传递到另一个组件

Kri*_*gid 2 reactjs react-router react-props

我使用<NavLink>routing现在如何传递props<NavLink>另一个组件

Kri*_*gid 8

在第一个组件上执行此操作

<NavLink
     to={{
        pathname:"/priview-data",
        aboutProps:{
              selectedidds:this.state.selectedIds
             }
        }}
        exact
       >Preview Question
</NavLink>
Run Code Online (Sandbox Code Playgroud)

现在在另一个组件上

constructor(props) {
    super(props);
    console.log(props.location.aboutProps);
  }
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

谢谢


akh*_*hid 8

您可以使用Link和将数据传递给导航组件的方式NavLink

<Link to={{
   pathname:'/home',
   state: {name:'from home page'}  
 }}>
  Go to Home
</Link>
Run Code Online (Sandbox Code Playgroud)

或使用导航链接

<NavLink to={{
   pathname:'/home',
   state: {title:'from home page'}  
 }}>
  Go to Home
</NavLink>
Run Code Online (Sandbox Code Playgroud)

在导航组件中,您可以像这样访问。

如果是钩子

import {useLocation} from 'react-router-dom'

    function App(){
      let location = useLocation();
      console.log(location)
      return <h2>...</h2>
    }
Run Code Online (Sandbox Code Playgroud)

如果它是基于类的组件

console.log(this.props.location)
Run Code Online (Sandbox Code Playgroud)


Nee*_*ngh 5

<NavLink to="/onboarding/profile" state={{ from: "occupation" }}>
  Next Step
</NavLink>
Run Code Online (Sandbox Code Playgroud)

现在剩下的唯一问题是,我们如何访问状态数据,以便我们可以基于它更新 UI?为了回答这个问题,我们需要查看在/onboarding/profile路由中渲染的组件。对于我们的示例,我们将其称为配置文件。

    import { useLocation } from 'react-router-dom'
    
    function Profile () {
      let location = useLocation();
      console.log(location.state.from);
    
      return (
        ...
      )

}
Run Code Online (Sandbox Code Playgroud)