react父子组件传值
首先父传子组件
最原始的props
获取
父组件
import React, { useRef, memo, useMemo, useCallback, useState } from 'react';
import Add from "./page/add"
export default function Home() {
const paData = useRef('11')
return (
<>
<Add paData={paData}></Add>
</>
)
}
子组件
直接props就可以获取
import React, { useRef, memo, useMemo, useCallback, useState, forwardRef,useImperativeHandle } from 'react';
const Home = (props,ref) => {
console.log(props.paData.current, 'w1');
return (
<>
</>
)
})
export default Home
子传父
借助forwardRef
,useImperativeHandle
hook来传值
父组件
import React, { useRef, memo, useMemo, useCallback, useState } from 'react';
import Add from "./page/add"
export default function Home() {
const fun = () => {
console.log(changea.current.focus, '51223');
}
return (
<>
<Add ></Add>
<div onClick={fun}>+1</div>
</>
)
}
子组件
import React, { useRef, memo, useMemo, useCallback, useState, forwardRef, useImperativeHandle } from 'react';
const Home = forwardRef((props, ref) => {
useImperativeHandle(ref, () => ({
focus: () => {
chaneV.current.focus();
console.log(2);
}
}))
return (
<>
<div>子点击事件</div>
<button onClick={chaneV}>+1</button>
{console.log(chDa)}
<div>{chDa}</div>
</>
)
})
a
是ref绑定的 ,a.current.focusfocus
是子组件中的方法 这样就可以直接通过 绑定值.current.方法名来调用子组件中的方法,然后子组件的第二个参数名也应该是a