Reactjs 我应该使用useRef或lift state up来处理以下情况吗?

Reactjs 我应该使用useRef或lift state up来处理以下情况吗?,reactjs,react-hooks,Reactjs,React Hooks,在某些情况下,我必须在父组件中发送请求,而param是子组件的状态。 我可以这样做吗 function Parent() { const paramRef = useRef(null) return <Modal onConfirm={()=>{request(paramRef.current)}}> <Child bindParam = {(param) => paramRef.current = param} /&g

在某些情况下,我必须在父组件中发送请求,而param是子组件的状态。 我可以这样做吗

function Parent() {
    const paramRef = useRef(null)
    return <Modal onConfirm={()=>{request(paramRef.current)}}>
               <Child bindParam = {(param) => paramRef.current = param} />
           </Modal>
}

function Child({bindParam}) {
    const [state, setState] = useState('foo')
    useEffect(()=>{
        bindParam(state)
    }, [state, bindParam])
    
    return ...
}
函数父函数(){
const paramRef=useRef(null)
返回{request(paramRef.current)}}>
paramRef.current=param}/>
}
函数子({bindParam}){
const[state,setState]=useState('foo')
useffect(()=>{
bindParam(州)
},[state,bindParam])
返回。。。
}
或者我必须提升孩子的状态。 对不起,我的英语很差。我把问题说清楚了吗?

请将您的状态“useState()”移动到父组件,并将其作为道具传递给子组件

function Parent() {
     const [state, setState] = useState('foo')
    return <Modal onConfirm={()=>{request(paramRef.current)}}>
               <Child state={state}  setState={setState}/>
           </Modal>
}

function Child({state, setState}) {
   
    useEffect(()=>{ 
     setState('foo1');
    }, [])
    
    return ...
}
函数父函数(){
const[state,setState]=useState('foo')
返回{request(paramRef.current)}}>
}
函数子级({state,setState}){
useffect(()=>{
设置状态(“foo1”);
}, [])
返回。。。
}
现在,您应该能够在父组件或子组件上更改状态,但您需要注意,状态更改将重新呈现组件。

请将您的状态“useState()”移动到父组件,并将其作为道具传递给子组件

function Parent() {
     const [state, setState] = useState('foo')
    return <Modal onConfirm={()=>{request(paramRef.current)}}>
               <Child state={state}  setState={setState}/>
           </Modal>
}

function Child({state, setState}) {
   
    useEffect(()=>{ 
     setState('foo1');
    }, [])
    
    return ...
}
函数父函数(){
const[state,setState]=useState('foo')
返回{request(paramRef.current)}}>
}
函数子级({state,setState}){
useffect(()=>{
设置状态(“foo1”);
}, [])
返回。。。
}

现在,您应该可以在父级或子级更改状态,但您需要注意,状态更改将重新呈现组件。

我认为您需要将状态移动到父组件)将组件实例传递到其他地方是个坏主意)我认为您需要将状态移动到父组件)将组件实例传递到其他地方是个坏主意)