[英]Passing state from child to parent component in react
I have a parent and child component, i want to pass the state(share) from the child component to the parent one in the props(isChecked), how can this be done?我有一个父子组件,我想将状态(共享)从子组件传递到道具(isChecked)中的父组件,这怎么办?
export class Form extends React.Component<FormProps, {
...,
isChecked?: boolean}> {
constructor(props: FormProps) {
super(props);
this.state = {
...,
isChecked:false
};
private checkField = () => {
const checked = this.state.isChecked
console.log('check '+checked)
}
render() {
}
return <div><Input name="Name" required={true} isChecked={this.state.isChecked}></div>
}
export function Input(props: React.PropsWithChildren<{name: string, required?: boolean, isChecked?:boolean}>) {
const [share, setShare] = useState(false);
return <Fragment>
<div>
{props.name}
<span onClick={(event) => {setShare(!share);props.isChecked = share;}}>Selection {props.required ? '(Required)': ''}</span>
</div>
<div className="btn btn--dark btn--margin-left" onClick=
{this.checkField}> Verify</div>
</Fragment>;
}
For Child to Parent Interaction, you should pass a function as prop to the child from parent..对于孩子与父母的互动,您应该将 function 作为 prop 从父母那里传递给孩子。
export class Form extends React.Component<FormProps, {
...,
isChecked?: boolean}> {
constructor(props: FormProps) {
super(props);
this.state = {
...,
isChecked:false
};
render() {
return <div>
<Input
name="Name"
required={true}
isChecked={this.state.isChecked}
handleChecked={
(isChecked: boolean) => this.setState({isChecked})
}
/>
</div>
}
export function Input(props: React.PropsWithChildren<{name: string, required?: boolean, isChecked?:boolean, handleChecked?: (isChecked: boolean) => void}>) {
const [share, setShare] = useState(false);
return <Fragment>
<div>
{props.name}
<span onClick={
(event) => {
setShare(!share);
if(handleChecked) {props.handleChecked(share);}
}}>Selection {props.required ? '(Required)': ''}</span>
</div>
</Fragment>;
}
I guess you want to use share
in your parent component and if that's the case you must set the state in the parent and pass it to your child as a prop just as you did with isChecked
.我想您想在父组件中使用share
,如果是这种情况,您必须在父组件中设置 state 并将其作为道具传递给您的孩子,就像您对isChecked
所做的那样。
Very easy to do you just need to pass a handleChange
prop to your child component from the parent component and then utilize it in the child component.很容易做到,你只需要将handleChange
prop 从父组件传递给你的子组件,然后在子组件中使用它。
Checkout this code-sandbox检查此代码沙箱
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.