react-hook 父子傳值

redux 來傳值應該是最好的吧,還有useContext,待更。。。

一.父傳子(簡單-屬性傳值)

// 父組件
import { useState } from 'react'
import ChildCom from './learnUseforward'
const FatherCom = () => {
    const [count, setCount] = useState(123456)
    return (
        <div>
            <ChildCom data={ count }/>
        </div>
    )
}

export default FatherCom
// 子組件
function ChildCom (props) {
    return (
        <div>
           { props.data }     
        </div>
    )
}

export default ChildCom

二.子傳父(使用useRef)

// 父組件
import { useRef } from 'react'
import { Button} from 'antd'
import ChildCom from './learnUseforward'
const FatherCom = () => {
    const childRef = useRef(null)
    const handleGetChildData = () => {
        const data = childRef.current.getFromData()
        console.log('data', data)
    }
    return (
        <div>
            <ChildCom ref={ childRef }/>           
            <Button onClick={() => handleGetChildData()}>我要獲取子組件的數據</Button>
        </div>
    )
}


export default FatherCom
// 子組件
import { useState, forwardRef, useImperativeHandle } from 'react'
import { Button } from 'antd'
function ChildCom (props, ref) {
    const [formValue, setFormValue] = useState({name: 'ky', age: 18})
    useImperativeHandle(ref, ()=>({
        getFromData: ()=> {
            return formValue
        }
    }))
    return (
        <div>
            我是from組件          
        </div>
    )
}

ChildCom = forwardRef(ChildCom)
//這里用forwardRef包裹住了,LearnUseforward必須以函數聲明,不能是變量聲明

export default ChildCom
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容