Greg Rami
09/15/2024, 4:21 PMdata object FeedScreen : Screen {
@Composable
override fun Content() {
val screenModel: FeedScreenModel = getScreenModel()
val navigator = LocalNavigator.currentOrThrow
val feedItems = screenModel.feedItems.collectAsState()
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(feedItems.value) { feedItem ->
FeedItem(
feedItem,
onItemClick = { navigator.push(FeedItemScreen(feedItem)) },
onLikeClick = { screenModel.onLikeClick(feedItem) },
)
}
}
}
}
and my FeedItemScreen:
data class FeedItemScreen(val feedItem: FeedItem) : Screen {
@Composable
override fun Content() {
val screenModel: FeedItemScreenModel = getScreenModel()
screenModel.setFeedItem(feedItem)
val observableFeedItem = screenModel.feedItem.collectAsState()
FeedItem(
observableFeedItem.value!!,
onItemClick = {},
onLikeClick = { screenModel.onLikeClick() },
)
}
}
FeedItem is a @Composable fun that has an image with like button and count
my issue is that I tap the item on the Feed, it opens the Detail view FeedItemScreen, when I tap the like button in FeedItemScreen , both the FeedItem from FeedItemScreen and the FeedItem from FeedScreen LazyColumn get recomposed 😕
Resulting in my like status being reverted in FeedItemScreen since it's using the recomposition of FeedItem in which the feedItem like status has not been updated yet
Any idea why this is happening? I thought calling the composable function FeedItem() would create separate unrelated composable objects