使用 useNavigate 从 React Router Dom 将数据传递到组件

mio*_*uri 9 javascript reactjs react-router-dom

我用来useNavigate转到该组件,并且需要ChatRoom在单击按钮时将数据(状态)传递给该组件。该组件位于路线上/chatroom。我正在使用 React Router Dom v6。我已阅读文档,但找不到我要找的内容。

export default function Home() {
  const [username, setUsername] = useState("");
  const [room, setRoom] = useState("");

  const navigate = useNavigate();

  const handleClick = () => {
    navigate("/chatroom");
  };

  return (
    <button
      type="submit"
      className="btn"
      onClick={() => {
        handleClick();
      }}
    >
      Join Chat
    </button>
  );
}
Run Code Online (Sandbox Code Playgroud)

You*_*mar 16

/chatroom您可以将数据传递到React Router Dom 中对应的组件,v6如下所示:

navigate('/chatroom', { state: "Hello World!" });
Run Code Online (Sandbox Code Playgroud)

并在 hook 的帮助下使用它useLocation

import { useLocation } from "react-router-dom";
function ChatRoom() {
  const { state } = useLocation();
  return (
    <div>
      {state}
    </div>
  );
}
export default Chatroom;
Run Code Online (Sandbox Code Playgroud)

如果你想传递多个值,请使用一个对象,如下所示:

navigate('/chatroom', { state: {id:1, text: "Hello World!"} });
Run Code Online (Sandbox Code Playgroud)

然后用 useLocationhook 再次使用它:

import { useLocation } from "react-router-dom";
function ChatRoom() {
  const { state } = useLocation();
  return (
    <div>
      id: {state.id}
      text: {state.text}
    </div>
  );
}
export default Chatroom;
Run Code Online (Sandbox Code Playgroud)