javascript - 使用反应钩子将数据传递给兄弟组件?
问题描述
我想将一个变量username
从一个sibling1
组件传递到另一个sibling2
组件并在那里显示它。
Sibling1 组件:
const sibling1 = ({ usernameData }) => {
// I want to pass the username value I get from input to sibling2 component
const [username, setUsername] = useState("");
const handleChange = event => {
setUsername(event.target.value);
};
return (
<Form.Input
icon='user'
iconPosition='left'
label='Username'
onChange={handleChange}
/>
<Button content='Login' onClick={handleClick} />
)
}
export default sibling1;
Sibling2 组件:
export default function sibling2() {
return (
<h1> Here is where i want to display it </h1>
)
}
解决方案
您将需要在兄弟姐妹的父母中处理您的用户名。然后你可以传给setUsername
你的兄弟姐妹1,和userName
你的兄弟姐妹2。当兄弟 1 使用 setUsername 时,它将更新您的父状态并重新渲染您的兄弟 2(因为该道具已被编辑)。
这是它的样子:
const App = () => {
const [username, setUsername] = useState('Default username');
return (
<>
<Sibling1 setUsername={setUsername} />
<Sibling2 username={username} />
</>
)
}
const Sibling2 = ({username}) => {
return <h1> Helo {username}</h1>;
}
const Sibling1 = ({setUsername}) => {
return <button onClick={setUsername}>Set username</button>;
}
推荐阅读
- html - 基于父引导程序调整大小的类似 Div
- spring-boot - Springboot 与 Elasticsearch Data 禁用特定实体的 REST 端点
- python - 如何在python中的特定打印机上打印线段?
- ionic4 - 离子角度应用程序。我无法使用@ViewChild nativeElement 获取 div 的宽度。为什么?
- laravel - Laravel RedirectifAuthenticated 不能与多个自定义警卫一起使用
- javascript - 如何将属性设置为在 vue js 数据中定义的对象?
- ubuntu - ACR122 NFC 阅读器不适用于 libnfc ubuntu
- time-series - DynamoDB 对时间序列数据有好处吗?(市场股票价格示例)
- excel - 如何使用 VBA 自动点击 URL?
- javascript - Rails 加载 js 不一致