子コンポーネントからonChange
イベントを検知し、値を取得して親コンポーネントに渡します。
子コンポーネント名: Input.tsx
親コンポーネント名: Parent.tsx
この二つのコンポーネントを使用して解説を行なっていきます。
Parent.tsx
Parent.tsx
import Input from '...'
const Parent = () => {
const [password, setPassword] = useState('')
return <Input onChange={setPassword} />
}
Input
コンポーネントに対して、onChange
という関数をPropとして渡しています。
Input.tsx
Input.tsx
interface Props {
onChange: (arg: string) => void
}
const Input<Props> = ({
onChange
}) => {
return (
<input
type="text"
onChange={(e) => onChange(e.target.value)}
/>
)
}
Parent.tsx
からPropで渡ってきたonChange
イベントを受け取り、input
要素で使用します。
input
要素でonChange
イベントを捕捉したら、親からProp
で渡ってきたonChange
を発火させます。