我无法使用props 通过Reaction路由中的链接传递信息.我试图通过联系人卡片中的一个组件传递当前联系人,并将相同的props 传递给联系人详细信息,但我无法在联系人详细信息中获取我发送的对象,在安慰props 时变得未定义.

import React, { useState } from 'react';
import user from "../images/user.png";
import { Link } from "react-router-dom";

function ContactCard(props) {
  const [data, setData] = useState(props.contact)
  const { id, name, email, mobile } = props.contact;

  return (
    <div>
      <div className="item">
        <div className="ui avtar image">
          <img src={user} alt="user" />
        </div>
        <div className="content">
          <Link to={{ pathname: `/contact/${id}`, state: { data: data }}}>
            <div className="header">{name}</div>
            <div>{email}</div>
            <div>{mobile}</div>
          </Link>
        </div>
        <i
          className="trash alternate outline icon"
          style={{ color: 'red', marginTop: '7px' }}
          onClick={() => props.clickHandler(id)}
        ></i>
      </div>
    </div>
  );
}

export default ContactCard;
import React from 'react';
import { useLocation } from 'react-router-dom';
import user from "../images/user.png";

function ContactDetails(props) {
    const location = useLocation();
    console.log(props, "props");
    const data = location.state?.data;
    console.log(data);
//   const { contact } = props.location.state;
//   const { id, name, email, mobile } = contact;

  return (
    <div className="main">
      <div className="ui card centered">
        <div className="image">
          <img src={user} alt="user" />
        </div>
        <div className="content">
          <div className="header">name</div>
          <div className="description">email</div>
          <div className="description">mobile</div>
        </div>
      </div>
    </div>
  );
}

export default ContactDetails;
import React, { useState, useEffect } from "react";
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import { v4 as uuid } from "uuid";
import './App.css';
import Header from "./Header";
import AddContact from "./AddContact";
import ContactList from "./Contactlist";
import ContactDetails from "./ContactDetails";

function App() {
  const LOCAL_STORAGE_KEY = "contacts";

  const [contacts, setContacts] = useState(
    JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY)) || []
  );

  const addHandler = (contact) => {
    console.log(contact);
    setContacts([...contacts, { id: uuid(), ...contact }]);
  };

  const removeContactHandler = (id) => {
    const newContactList = contacts.filter((contact) => {
      return contact.id !== id;
    });

    setContacts(newContactList);
  }

  useEffect(() => {
    localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(contacts));
  }, [contacts]);

  return (
    <div className="ui container">
      <Router>
        <Header />
        <div className="content">
          <Routes>
            <Route path="/" element={<ContactList contacts={contacts} getContactId={removeContactHandler} />} />
            <Route path="/add" element={<AddContact addHandler={addHandler} />} />
            <Route
              path="/contact/:id"
              element={<ContactDetails/>}
            />
          </Routes>
        </div>
      </Router>
    </div>
  );
}

export default App;

推荐答案

也许您应该try 以以下方式通过<Link></Link>传递所需的值:

<Link to={} state={{ data: data }}></Link>

看起来您已经将stateprops 放置在toprops 的值内.无论如何,一定要让我们知道这一改变是否奏效.祝好运!

Reactjs相关问答推荐

重定向React路由中没有根文件夹的所有路径匹配

客户端组件中服务器组件的两难境地

通过单击具有此值的按钮将值添加到数组对象键

Tailwind不使用@apply classes构建,并强制使用类似于移动的viewport

TypeError:SearchProduct.get()获得了意外的关键字参数查询'

有没有一种惯用的方式来接受特定的子元素?

在React Create App TS项目中安装material UI

一键MUI导出

React - 将一个充满空值的无限大小的数组存储在 ref 中是否可以,或者我应该重置数组吗?

React - 添加了输入数据但不显示

当 React 中的状态发生变化时如何停止重新加载谷歌 map ?

虽然通过了身份认证,但并没有导航到请求的页面

将 useState 设置为组件内部的值

使用dayjs时如何在输入类型日期时间本地字段中设置默认值?

一周前刚开始学习React,一直在调试为什么输入框在每次输入后都没有焦点

React Native Realm 应用程序在发布构建后崩溃

NextJs - 如何从站点 map 生成器中删除重复的 URL?

axios post方法中的请求失败,状态码为500错误

React Router 6,一次处理多个搜索参数

警告:您在没有 `onChange` 处理程序的情况下为表单字段提供了 `value` 属性