【发布时间】:2020-03-23 19:48:33
【问题描述】:
const Component = React.memo(props => {
const { url } = props;
const keyExtractor = useCallback(item => item.id, []);
const handleClick = useCallback(() => {
Linking.openURL(url);
}, [url]);
const renderItem = useCallback(({ item }) => {
return (
<TouchableOpacity onPress={handleClick}>
<Text>Test</Text>
</TouchableOpacity>
);
}, [handleClick]);
return (
<FlatList
data={data}
keyExtractor={keyExtractor}
renderItem={renderItem}
/>
);
});
就像上面的代码。
如果renderItem 函数被useCallback 钩子包裹。它必须检查handleClick 函数引用是否已更改,因为如果url 不同,handleClick 函数可能会更改。而且看起来有点奇怪。
不知道用useCallback包裹renderItem在性能上是否有显着差异。
为renderItem 函数使用钩子的最佳做法是什么?谢谢
【问题讨论】:
标签: javascript reactjs react-native react-hooks