---
title: سؤالات متداول
description: پاسخ سؤالات متداول درباره ReArch رو اینجا پیدا کن.
---

# سؤالات متداول
اگه سؤالی داری، لطفاً یه پست توی بخش بحث‌ها بساز و ممکنه نتیجه‌ش رو اینجا بذارم!  
- [پست‌های بحث Rust](https://github.com/GregoryConrad/rearch-rs/discussions)  
- [پست‌های بحث Dart/Flutter](https://github.com/GregoryConrad/rearch-dart/discussions)

## آیا اثرات جانبی حالت باعث بازسازی داخلی می‌شن؟
بله! به‌عنوان یه قانون کلی،  
هر اثر جانبی‌ای که یه حالت *خارجی نسبت به ساخت (build)* رو تغییر بده  
و بعد *اون حالت* یا یه مقدار وابسته به اون حالت رو برگردونه،  
احتمالاً باعث بازسازی می‌شه.  
به‌عنوان مثال، `setState` یه مقدار خارجی نسبت به خود ساخت کپسول رو آپدیت می‌کنه (چون یه callback هست)،  
و `use.state` هم `state` رو برمی‌گردونه، پس بازسازی رو فعال می‌کنه.  
در حالی که `use.memo` یه مقدار حالت رو آپدیت می‌کنه، ولی این کار داخل خود ساخت انجام می‌شه،  
پس بازسازی‌ای فعال نمی‌کنه.

## آیا `rebuild()` بازسازی رو فوراً فعال می‌کنه؟ یا می‌تونی پشت سر هم صداش کنی؟
برای کپسول‌ها: بله.  
اگه چند بار پشت سر هم `rebuild()` رو فراخوانی کنی، چند بازسازی فعال می‌شه.  
این برای فراخوانی‌های پشت سر هم `setState` یا چیزهای مشابه هم صدق می‌کنه؛  
چند بازسازی فعال می‌شه.  
از اونجایی که این معمولاً مطلوب نیست، ReArch "تراکنش‌های اثر جانبی" داره  
که می‌تونه یه سری اثر جانبی رو توی یه دسته (batch) اجرا کنه تا فقط یه بازسازی انجام بشه.
```dart
final runTransaction = use.transactionRunner();
void updateMultipleEffectsInOneBuild() {
  runTransaction(() {
    setState1(1234);
	setState2(4321);
	invalidateFuture();
	somethingElseThatMayRebuild();
  });
}
```
برای ویجت‌های فلاتر: خیر.  
بازسازی‌ها به‌صورت خودکار توی فریم بعدی از طریق زمان‌بند ساخت فلاتر دسته‌بندی می‌شن  
(ReArch داخلیاً از  
[`Element.markNeedsBuild`](https://api.flutter.dev/flutter/widgets/Element/markNeedsBuild.html) استفاده می‌کنه).  
> برای اطلاعات بیشتر درباره "تراکنش‌های اثر جانبی" می‌تونی [اینجا](/core/effects) رو بخونی.

## (Dart/Flutter) هدف از `SideEffectRegistrar.register()` چیه؟
`use.register()`، همون‌طور که معمولاً دیده می‌شه، برای پیاده‌سازی اثرات جانبی سطح پایین طراحی شده،  
و به همین دلیل معمولاً لازم نیست مستقیماً ازش استفاده کنی.  
در واقع، این یه ترکیبیه از یه راه برای دسترسی به دنیای بیرون  
(از طریق `SideEffectApi`)،  
به همراه یه راه برای فراخوانی یه تابع خاص *فقط توی اولین ساخت*،  
که می‌تونه برای نگه داشتن حالت بین ساخت‌ها استفاده بشه.

## (Dart/Flutter) چطور می‌تونم ReArch رو با `fpdart` استفاده کنم؟ به‌خصوص که `Option`ها باهم تداخل دارن.
به این لینک‌ها نگاه کن:  
[https://github.com/GregoryConrad/rearch-dart/issues/79#issuecomment-1889770035](https://github.com/GregoryConrad/rearch-dart/issues/79#issuecomment-1889770035)  
و  
[https://github.com/GregoryConrad/rearch-dart/issues/79#issuecomment-1890421419](https://github.com/GregoryConrad/rearch-dart/issues/79#issuecomment-1890421419).
