在React和TypeScript中,子组件向父组件发送数据通常是通过回调函数实现的,而父组件向子组件发送数据则是通过props(道具)来实现的。
子组件可以通过定义一个回调函数的prop,然后在适当的时候调用这个函数来向父组件发送数据。
// ChildComponent.tsx
import React from 'react';
interface ChildProps {
onSendData: (data: any) => void; // 定义回调函数prop
}
const ChildComponent: React.FC<ChildProps> = ({ onSendData }) => {
const sendDataToParent = () => {
const data = 'Hello from child';
onSendData(data); // 调用回调函数发送数据
};
return (
<button onClick={sendDataToParent}>Send Data to Parent</button>
);
};
export default ChildComponent;
在父组件中,你可以这样使用子组件,并处理从子组件发送过来的数据:
// ParentComponent.tsx
import React, { useState } from 'react';
import ChildComponent from './ChildComponent';
const ParentComponent: React.FC = () => {
const [receivedData, setReceivedData] = useState<string | null>(null);
const handleDataFromChild = (data: string) => {
setReceivedData(data);
};
return (
<div>
<ChildComponent onSendData={handleDataFromChild} />
{receivedData && <p>Received data: {receivedData}</p>}
</div>
);
};
export default ParentComponent;
父组件通过props向子组件传递数据。在TypeScript中,你需要为props定义一个接口来明确数据类型。
// ParentComponent.tsx
import React from 'react';
import ChildComponent from './ChildComponent';
interface ParentProps {
// 父组件可能有的其他props
}
const ParentComponent: React.FC<ParentProps> = (props) => {
const dataToChild = 'Hello from parent';
return (
<div>
<ChildComponent dataFromParent={dataToChild} />
</div>
);
};
export default ParentComponent;
在子组件中,你可以这样接收和使用从父组件传递过来的数据:
// ChildComponent.tsx
import React from 'react';
interface ChildProps {
dataFromParent: string; // 定义接收父组件数据的prop
}
const ChildComponent: React.FC<ChildProps> = ({ dataFromParent }) => {
return (
<p>{dataFromParent}</p>
);
};
export default ChildComponent;
这种父子组件之间的通信方式非常常见,适用于多种场景,例如:
useState
或useReducer
等Hook来正确管理状态。通过以上方法,你可以有效地在React和TypeScript的子组件和父组件之间发送和使用道具。
领取专属 10元无门槛券
手把手带您无忧上云