我正在构建一个带有 react native 的 android 电视应用程序。我有一个填充了 TouchableHighlights 的平面列表,我需要第一个元素被聚焦,但没有调用 onfocus 函数。
我不确定它是否与 useCallback 挂钩或是否与 FlatList 或 TouchableHighlight 直接相关。
感谢你的帮助。问候。
export default function PokeGrid ({hasTVPreferredFocus}) {
const [pokeData, setPokeData] = useState([]);
const [focus, setFocus] = useState(false);
const onFocus = useCallback(() => {
console.log('llamo el onFocus');
setFocus(true);
}, []);
const onBlur = useCallback(() => {
setFocus(false);
}, []);
const PokeApiRequest = async () => {
try {
const res = await axios.get("https://pokeapi.co/api/v2/pokemon?limit=50")
if(res) {
console.log();
setPokeData(res.data.results)
}
} catch (error) {
console.log("Chingó a su madre: ", error);
}
}
useEffect (() => {
PokeApiRequest()
return () => {
}
}, [])
这是我的 renderItem 函数:
renderItem = ({item, index}) => {
let url = item.url;
const idPokemon = url.split("https://pokeapi.co/api/v2/pokemon");
const link = urlImage + idPokemon[1].substring(0, idPokemon[1].length-1) + ".png";
return <TouchableHighlight
onFocus={onFocus}
onBlur={onBlur}
style={[styles.item, focus ? styles.itemFocused : null]}
hasTVPreferredFocus={true}
>
<View>
<Image
style= {styles.image}
resizeMode= "contain"
source= {{uri: link}}
/>
<Text>{item.name}</Text>
</View>
</TouchableHighlight>
}