简体   繁体   English

将 div 链接到 React 元素并传递道具

[英]Make div link to an React Element and pass props

I want to make it so when you click on a div it redirects you to another page, like react router but I have no knowledge to make it yet.我想做到这一点,所以当你点击一个 div 时,它会将你重定向到另一个页面,比如反应路由器,但我还不知道如何做到这一点。 Here is my code:这是我的代码:

const Card: React.FC = ({ info }: any) => {
  return (
    <div className='card stacked featured'>
      <img src={info.links.mission_patch} className='card_image' alt='NO-IMAGE'/>
      <div className='card_content'>
        <h2 className="card_title">{info.mission_name}</h2>
        <p className='card_number'>Flight: {info.flight_number}</p>
        <p className='card_description'>{info.details}</p>
      </div>
    </div>
  )
}

Basically this is card, the data is from a web api. I want to make it so when I click on a card a whole new page shows with only that card data not other cards because they are iterated.基本上这是卡片,数据来自 web api。我想这样做,所以当我点击一张卡片时,一个全新的页面只显示该卡片数据,而不显示其他卡片,因为它们是重复的。

I suggest using useNavigate from react-router-dom.我建议使用 react-router-dom 中的 useNavigate。 It is what I use for such things.这就是我用来做这些事情的东西。

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

const Card: React.FC = ({info}: any) => {
    const navigate = useNavigate()

    return (
        <div className='card stacked featured'>
          <img src={info.links.mission_patch} className='card_image' alt='NO-IMAGE'/>
          <div className='card_content' onClick={() => navigate("/toThePageYouWantToNavigateTo")>
            <h2 className="card_title">{info.mission_name}</h2>
            <p className='card_number'>Flight: {info.flight_number}</p>
            <p className='card_description'>{info.details}</p>
          </div>
          
        </div>
  )
}

Import and render the Link component from react-router-dom .react-router-dom导入并渲染Link组件。

import { Link } from 'react-router-dom';

...

const Card: React.FC = ({ info }: any) => {
  return (
    <div className='card stacked featured'>
      <img src={info.links.mission_patch} className='card_image' alt='NO-IMAGE'/>
      <Link
        className='card_content'
        to={`"/mission/${info.id}`} // <-- this is path you want to link to
      >
        <h2 className="card_title">{info.mission_name}</h2>
        <p className='card_number'>Flight: {info.flight_number}</p>
        <p className='card_description'>{info.details}</p>
      </Link>
    </div>
  );
};

If you don't want to render an actual link/anchor tag into the DOM then import and use the useNavigate hook and add an onClick handler to the div element.如果您不想将实际的链接/锚标记呈现到 DOM 中,则导入并使用useNavigate挂钩并将onClick处理程序添加到div元素。

import { Link } from 'react-router-dom';

...

const Card: React.FC = ({ info }: any) => {
  const navigate = useNavigate();

  return (
    <div className='card stacked featured'>
      <img src={info.links.mission_patch} className='card_image' alt='NO-IMAGE'/>
      <div
        className='card_content'
        onClick={() => navigate(`"/mission/${info.id}`)} // <-- this is path you want to link to
      >
        <h2 className="card_title">{info.mission_name}</h2>
        <p className='card_number'>Flight: {info.flight_number}</p>
        <p className='card_description'>{info.details}</p>
      </div>
    </div>
  );
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM