ref在React Native中未定义

时间:2020-01-07 12:10:14

标签: react-native

有人可以帮助我弄清楚在RN中使用setNativeProps的最佳方法是什么。

在我的react函数组件中,我做了类似的事情

const AutoComplete = (props) => {
 let parentViewRef = null

  useEffect(() => {
    setTimeout(function(){ console.log(parentViewRef) }, 3000)
  },[])

  return(
    <View  
      ref={(viewRef) => { 
        parentViewRef = viewRef 
      }}
      style={styles.modelOpenViewMain}>    <View style={styles.modelOpenInputView}>

           </View>
        </View>
    )
  }
}

但是很不幸,我的parentViewRef不确定。知道我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您要实现的目标,那么您应该使用useRef挂钩。

所以您的代码看起来像这样:

import React, { useRef } from 'react';

const AutoComplete = (props) => {
 let parentViewRef = useRef(null);

  return(
    <View  
      ref={parentViewRef}
      style={styles.modelOpenViewMain}>    <View style={styles.modelOpenInputView}>

           </View>
        </View>
    )
  }
}

然后您就可以通过其current属性(例如 parentViewRef.current. ...

希望这会有所帮助!

答案 1 :(得分:0)

尝试将parentViewRef作为参数传递给useEffect方法。

const AutoComplete = (props) => {

let parentViewRef = null

    useEffect(() => {
    console.log(parentViewRef);
    }, [parentViewRef]);

return (
    <View
        ref={(viewRef) => parentViewRef = viewRef}>
        <View >
            <Text>CONTENT TEXT</Text>
        </View>
    </View>
)}