Codeit Mobile
94 subscribers
3 photos
1 video
243 links
📱 آموزش برنامه‌نویسی موبایل

Kotlin • Android

🚀 آموزش ساده، کاربردی و پروژه‌محور
💡 مخصوص توسعه‌دهندگان موبایل
Download Telegram
🚀 Jetpack Compose Part 14: State Hoisting – مدیریت هوشمند State در اپلیکیشن‌های کامپوز

تا حالا شده توی کامپوز، state رو تو یه کامپوننت تعریف کنی و بعد ببینی نمی‌تونی ازش جای دیگه استفاده کنی؟
این دقیقاً همون جایی‌ست که «State Hoisting» وارد بازی می‌شه!

🎯 State Hoisting یعنی: برداشتن state از داخل یک کامپوزیبل و انتقالش به بالا (مثلاً به ViewModel یا کامپوزیبل والد) تا چند تا کامپوننت بتونن باهاش کار کنن.

مزیت اصلی:
- کامپوننت‌ها بدون وابستگی مستقیم می‌تونن state رو تغییر بدن
- قابلیت تست کد چند برابر می‌شه
- کد تمیزتر و قابل نگهداری‌تر می‌شه

💡 مثال عملی:
فرض کن یه فرم ورود داری که توش دو تا فیلد «username» و «password» داری.
به جای اینکه هر فیلد state خودش رو داخل خودش داشته باشه، state رو به والد (مثلاً LoginScreen) می‌دی.

🔽 کد ساده و کاربردی:

@Composable
fun LoginScreen() {
var username by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }

Column {
TextField(
value = username,
onValueChange = { username = it },
label = { Text("Username") }
)
TextField(
value = password,
onValueChange = { password = it },
label = { Text("Password") }
)
Button(
onClick = { /* login with username & password */ }
) {
Text("Login")
}
}
}


🧠 کد بالا چطور کار می‌کنه؟
Stateهای «username» و «password» درون «LoginScreen» تعریف شدن.
ولی هر «TextField» فقط از طریق «onValueChange» اون state رو تغییر می‌ده.
اینجا راز «State Hoisting» همینه: state در بالا نگه داشته شده، و داده فقط به پایین (به کودک) منتقل می‌شه.

🎯 نکته پایانی:
وقتی state رو بالا بکشی، اپلیکیشن پیش‌بینی‌پذیرتر و کدت سازمان‌یافته‌تر می‌شه. این یکی از پایه‌های اصلی Jetpack Compose حرفه‌ایه!

#Codeit #Jetpack #Android #Kotlin #StateHoisting #ComposeTips
🌐 Codeit → https://code-it.ir

━━━━━━━━━━━━━━━
@CodeitMobile
2🔥1