我创建了一个包含登录组件和注册组件的签名页面组件。我的问题是,我如何传递一个onhtml函数从父到子,以便更改我的父组件(签名页组件)的状态?我期望的是,通过单击子组件中的按钮,可以切换父组件的活动状态,并根据活动状态更改样式。我试图通过一个处理功能从父到子,但它不能很好地工作。
有什么解决办法吗?
codesandbox中的详细信息:https://codesandbox.io/s/wizardly-sanne-rf0u2?file=/src/components/SignIn/SignIn.js
在我的父组件(SignPage)中,
function SignPage() {
const [active, setActive] = useState(false);
const handleClick = () => {
setActive(!active);
};
return (
<div className="sign-container">
<div
className={active ? "sign-wrapper s-signup" : "sign-wrapper"}
>
<SignIn handleClick={handleClick} />
<SignUp handleClick={handleClick} />
</div>
</div>
);
}
在我的子组件中(登录/注册)
import React, { useState } from "react";
import "./SignIn.css";
function SignIn(handleClick) {
return (
<div className="sign-in-container">
<form className="sign-form sign-in">
<h2>Sign In</h2>
<label htmlFor="email">
<span>Email Address</span>
<input type="email" name="email" />
</label>
<label htmlFor="password">
<span>Password</span>
<input type="password" name="password" />
</label>
<button className="submit" type="submit">
Sign In
</button>
<p className="panel-switcher" onClick={handleClick()}>
Don't have an account?
</p>
</form>
</div>
);
}
export default SignIn;
首先,组件的props
是对象类型。
所以,如果你想让句柄在子句中点击
,它应该像下面这样。
function SignIn({ handleClick }) {
// ...
}
第二,将函数传递给子函数时,不应调用它。
比如像下面这样。
<p className="panel-switcher" onClick={handleClick}>
就快到了,道具在第一个参数中作为对象传递,因此对于sign
组件,您可以使用destructuring,以便更改为:
function SignIn({ handleClick }) {
// code...
// Remove the () from `handleClick()` as that will immediately execute the function.
<p className="panel-switcher" onClick={handleClick}>
}
问题内容: 我有两个组件: 父组件 ,我想从中更改子组件的状态: 和 子组件 : 我需要从父组件更改子组件的 打开 状态,还是单击父组件中的按钮时从父组件调用子组件的 toggleMenu() ? 问题答案: 状态应在父组件中进行管理。您可以通过添加属性将值传输到子组件。
我有两个组件:父组件,我想改变子组件的状态: 和子组件: 我需要从父组件更改子组件的打开状态,或者当单击父组件中的按钮时,从父组件调用子组件的toggleMenu()?
这个问题在这里已经得到了回答,但事情总是在变化。 基本上,父组件获取一些数据,子组件需要这些数据。 这是子组件。
问题内容: 我正在尝试制作一个不错的ApiWrapper组件,以填充各种子组件中的数据。从我阅读的所有内容来看,这应该可以正常工作:https : //jsfiddle.net/vinniejames/m1mesp6z/1/ 但是由于某种原因,当父状态更改时,子组件似乎没有更新。 我在这里想念什么吗? 问题答案: 您的代码有两个问题。 您的子组件的初始状态是通过props设置的。 引用此SO答案:
假设我的父组件有两个子组件: 我从Child2获得一个输入,并将其传递给父组件(到目前为止,我知道该怎么做)。但是,我需要将该输入传递给Child1,以更新它的状态。 我怎么能那么做?
下面有一个子组件,我正在尝试更新父组件中的。我已经尝试了几个迭代,但没有运气。