如何将 props 传递给 react-bootstrap 的 Nav.Link

how to pass props to Nav.Link of react-bootstrap

我正在使用以下导航栏。我想将一些道具传递给 Nav.Link。我不知道如何将 属性 传递给 Nav.Link。还是就像 HTML href="a.html?param=test"?

    const Navigation = (props) => {
    console.log(props);
    return (
        <Navbar bg="primary" variant="dark">
            <Navbar.Brand href="/">Dating Service</Navbar.Brand>
            <Navbar.Toggle aria-controls="basic-navbar-nav" />
            <Navbar.Collapse id="basic-navbar-nav">
                <Nav className="ml-auto">
                    <Nav.Link href="/">Home</Nav.Link>
                    <Nav.Link href="/CreateProfile">Create Profile</Nav.Link>
                    <Nav.Link href="/ViewProfile">View Profile</Nav.Link>
                </Nav>
            </Navbar.Collapse>
        </Navbar>
    )
}

您正在将 props 传递给 Navigation 组件,这没问题;您可以使用 Nav.Link 中的道具,例如:

<Nav.Link href={links[0].url}>{links[0].label}</Nav.Link>

样本js:

import React, { useState } from "react";
import { Navbar, Nav } from "react-bootstrap";

const Navigation = ({ name, links }) => {
  return (
    <>
      <div>
        <Navbar bg="primary" variant="dark">
          <Navbar.Brand href="/">Dating Service</Navbar.Brand>
          <Navbar.Toggle aria-controls="basic-navbar-nav" />
          <Navbar.Collapse id="basic-navbar-nav">
            <Nav className="ml-auto">
              {links.map((val, indx) => {
                return (
                  <Nav.Link key={indx} href={val.url}>
                    {val.label}
                  </Nav.Link>
                );
              })}
            </Nav>
          </Navbar.Collapse>
        </Navbar>
      </div>
      <h1>Hello {name}!</h1>
    </>
  );
};
export default Navigation;

工作stackblitz here

在 Reactjs 18.6 中,您可以将道具作为 link 传递,然后可以通过 useLocation() 访问目标页面。下面的例子展示了如何传递 props

import React from 'react';
import { Link } from 'react-router-dom';
import { Nav } from 'react-bootstrap';

const ContactItem = ({ item }) => {
return (
<Nav>
   <Nav.Item>
      <Nav.Link as={Link}
      to={{
        pathname: '/َcontactform',
        state: { currentContact: item},
      }}
     >
     <i className="far fa-edit"></i>
     </Nav.Link>
   </Nav.Item>
</Nav>

)}
    
import React from 'react';
import { useLocation } from 'react-router-dom';

const ContactForm = () => {
  let location = useLocation();
  const { currentContact} = location.state;

  console.log(currentContact)
  return (  ... Components ...  )

}