【发布时间】:2022-01-01 19:44:29
【问题描述】:
目标:将数据从注册组合提供给应用组合,然后从应用组合提供给聊天组合 注册 --> 应用程序 --> 聊天 附加信息:Register 使用用户名,然后将其传递给 Chat comp 以呈现为用户名
或者我应该只是将值传递给 url 参数然后获取它? 我查找的答案是建议创建 redux 或来自类组件
import Chat from "./components/chat";
import Register from "./components/register";
import { BrowserRouter, Route, Routes } from "react-router-dom";
function App(props) {
console.log(props);
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Register />}>
<Route
path="chat"
element={(props) => <Chat {...props} data={true} />}
/>
</Route>
<Route
path="*"
element={
<main style={{ padding: "1rem" }}>
<p>404 :)</p>
</main>
}
/>
</Routes>
</BrowserRouter>
);
}
注册组件:
import { useState } from "react";
import { useNavigate } from "react-router-dom";
export default function Register() {
const navigate = useNavigate();
const [name, setName] = useState("");
const generatedName = `user#${Math.floor(Math.random() * 1000000 + 1)}`;
const handleSubmit = () => {
if (name === "") {
setName(generatedName);
}
navigate("/chat", { replace: true });
HERE I WANT TO RETURN THE DATA TO PARENT//return "hello parent";
};
return (
<div>
Enter username:{" "}
<input
placeholder={generatedName}
onChange={(e) => setName(e.target.value)}
></input>
<button onClick={() => handleSubmit()}>enter</button>
</div>
);
}
【问题讨论】:
-
移动你的状态和handleSubmit 给父母,然后把handleSubmit 作为道具传递给你的孩子。如果需要,也可以将状态作为道具传递给孩子。