📅  最后修改于: 2023-12-03 15:39:14.800000             🧑  作者: Mango
在React中,组件之间的数据是通过props进行传递的。通常,父组件将一些数据作为props传递给其子组件,但是有时候我们需要将子组件中的一些状态传递回父组件并进行处理。这就需要使用到从孩子传递给父母反应(lifting state up)的概念。本文将介绍将元素从孩子传递给父母反应的实现方式。
在父组件中定义一个state,用于获取子组件的状态值。
在父组件中定义一个函数callback,用于接收子组件中的状态值。
将callback函数作为props传递给子组件。
在子组件中定义一个事件处理函数,用于获取需要传递给父组件的状态值。
在事件处理函数中调用callback函数并将状态值传递给父组件。
// parent.js
import React, { useState } from "react";
import Child from "./child";
function Parent() {
const [dataFromChild, setDataFromChild] = useState(null);
function handleChildData(data) {
setDataFromChild(data);
}
return (
<div>
<p>Data from child: {dataFromChild}</p>
<Child onData={handleChildData} />
</div>
);
}
export default Parent;
// child.js
import React, { useState } from "react";
function Child(props) {
const [childData, setChildData] = useState("");
function handleChange(event) {
const data = event.target.value;
setChildData(data);
props.onData(data);
}
return (
<div>
<label>Enter data:</label>
<input type="text" value={childData} onChange={handleChange} />
</div>
);
}
export default Child;
在上面的代码示例中,父组件通过useState定义了一个state,用于获取子组件的状态值。定义了一个handleChildData函数,用于接收子组件中的状态值。在render函数中将handleChildData函数作为props传递给Child组件。Child组件中定义了一个handleChange事件处理函数,用于获取需要传递给父组件的状态值。在handleChange事件处理函数中调用props.onData函数并将状态值传递给父组件。