使用 useRef 在 React Native 中获取元素的子元素
Get the childrens of an element in react native using useRef
我想了解如何在 React Native 中使用 useRef 并获取 View 元素的子元素,但我无法实现它。
我正在尝试使用 TextInput
组件中的 .focus
方法来按下 TouchableOpacity
声明:
const input = useRef(null);
文本输入组件:
<View ref={input}>
<Tex>Email</Text>
<TextInput placeholder=""/>
</View>
元素:
<TouchableOpacity onPress={() => {}}>
<TextInputComponent />
</TouchableOpacity>
我试过 input.current.children
,但是 returns undefined
。
这是一个工作示例,说明如何在 TypeScript 的基本 expo init 项目上使用你想要的东西:
App.tsx
import { StatusBar } from "expo-status-bar";
import { StyleSheet, Text, View, TextInput, TouchableOpacity} from "react-native";
import { useRef, forwardRef} from "react";
const TextInputComponent = forwardRef<TextInput>((props, ref) => {
return (
<View>
<Text>Email</Text>
<TextInput ref={ref} placeholder="Some placeholder" />
</View>
);
});
export default function App() {
const input = useRef<TextInput>(null)
return (
<View style={styles.container}>
<Text>Open up App.tsx to start working on your app!</Text>
<StatusBar style="auto" />
<TouchableOpacity onPress={() => {
input.current?.focus();
}}>
<TextInputComponent ref={input} />
</TouchableOpacity>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});
在这种情况下,使用 forwardRef 更实用,这样您就不必遍历 View
组件的子组件来传递来自组件的 ref (App
在这种情况下)正在使用 TextInputComponent
.
我想了解如何在 React Native 中使用 useRef 并获取 View 元素的子元素,但我无法实现它。
我正在尝试使用 TextInput
组件中的 .focus
方法来按下 TouchableOpacity
声明:
const input = useRef(null);
文本输入组件:
<View ref={input}>
<Tex>Email</Text>
<TextInput placeholder=""/>
</View>
元素:
<TouchableOpacity onPress={() => {}}>
<TextInputComponent />
</TouchableOpacity>
我试过 input.current.children
,但是 returns undefined
。
这是一个工作示例,说明如何在 TypeScript 的基本 expo init 项目上使用你想要的东西:
App.tsx
import { StatusBar } from "expo-status-bar";
import { StyleSheet, Text, View, TextInput, TouchableOpacity} from "react-native";
import { useRef, forwardRef} from "react";
const TextInputComponent = forwardRef<TextInput>((props, ref) => {
return (
<View>
<Text>Email</Text>
<TextInput ref={ref} placeholder="Some placeholder" />
</View>
);
});
export default function App() {
const input = useRef<TextInput>(null)
return (
<View style={styles.container}>
<Text>Open up App.tsx to start working on your app!</Text>
<StatusBar style="auto" />
<TouchableOpacity onPress={() => {
input.current?.focus();
}}>
<TextInputComponent ref={input} />
</TouchableOpacity>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});
在这种情况下,使用 forwardRef 更实用,这样您就不必遍历 View
组件的子组件来传递来自组件的 ref (App
在这种情况下)正在使用 TextInputComponent
.