【发布时间】:2021-08-30 23:07:45
【问题描述】:
我试图让FlatList 中的第一个TouchableOpacity 在渲染后获得焦点。我尝试使用引用并从useEffect 触发焦点,但我无法弄清楚。
代码如下:
import React, {useRef, useEffect} from "react";
import {FlatList, Text, TouchableOpacity, View} from "react-native";
const MyScreen = () => {
const refs = useRef([]);
useEffect (() => {
refs.current[0].focus()
}, []);
const setFocusedElement = (element) => {
console.log(element);
}
return (
<View>
<FlatList
data={[1, 2, 3]}
keyExtractor={(item) => item}
renderItem={({ item, index }) => {
return (
<TouchableOpacity ref={el => refs.current[index] = el} onFocus={() => setFocusedElement(item)}>
<View><Text>{item}</Text></View>
</TouchableOpacity>
);
}}
/>
</View>
);
}
export default MyScreen;
我收到类似这样的错误:“TypeError: undefined is not an object (evalating 'refs.current[0].focus')”
[EDIT] 在基于@drew-reese 很好的答案进行了小幅编辑后,参考工作正常,但焦点仍然没有。
[EDIT 2] 下面是这个问题的一个简单示例:https://snack.expo.dev/@jerrybels/calm-ramen
【问题讨论】:
标签: reactjs react-native