FlatList memoization broken by inline callback
A React.memo item still re-renders on every list update — spot why this optimization fails.
Codejavascript
const Row = React.memo(({ item, onPress }) => {
console.log('render', item.id);
return (
<TouchableOpacity onPress={() => onPress(item.id)}>
<Text>{item.title}</Text>
</TouchableOpacity>
);
});
function List({ data }) {
const [selected, setSelected] = useState(null);
const renderItem = ({ item }) => (
<Row item={item} onPress={(id) => setSelected(id)} />
);
return (
<FlatList
data={data}
renderItem={renderItem}
keyExtractor={(item) => item.id}
/>
);
}The Row is wrapped in React.memo but still re-renders every time `selected` changes. What is the bug?