بنقرة واحدة
uno-mvux-listfeed
Create and use IListFeed<T> for reactive collections in MVUX.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Create and use IListFeed<T> for reactive collections in MVUX.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Create and use commands in MVUX for user interactions.
Create and use IFeed<T> for async data in MVUX.
Display async feed data with FeedView control.
Create and use IListState<T> for mutable reactive collections in MVUX.
Use messaging to sync MVUX states with entity changes.
Understand MVUX (Model-View-Update-eXtended) architecture in Uno Platform.
| name | uno-mvux-listfeed |
| description | Create and use IListFeed<T> for reactive collections in MVUX. |
| when_to_use | Use when loading a list of items from a service or API, displaying collections in `ListView`, `GridView`, or `ItemsRepeater`, filtering list data reactively, or choosing between `IListFeed<T>` (read-only) and `IListState<T>` (mutable). |
| metadata | {"author":"uno-platform","version":"2.3","category":"mvux"} |
Docs lookup: call
uno_platform_docs_search(...)first, thenuno_platform_docs_fetch(sourcePath="…")using thesourcePathfield from a result (a relative.mdpath; add the result'sanchorfor a section). Never pass a URL, a.htmllink, or a hand-built path.
Search for and fetch the documentation:
uno_platform_docs_search("MVUX ListFeed reactive collection IListFeed")
Primary documentation pages:
external/uno.extensions/doc/Reference/Reactive/listfeed.mdexternal/uno.extensions/doc/Learn/Mvux/Walkthrough/ListFeed.howto.mdFetch the full reference:
uno_platform_docs_fetch(sourcePath="external/uno.extensions/doc/Reference/Reactive/listfeed.md")
From the fetched docs, the key factory methods on the ListFeed static class:
ListFeed.Async(...) — from a method returning Task<IImmutableList<T>>ListFeed.AsyncEnumerable(...) — from an IAsyncEnumerable<IImmutableList<T>>ListFeed.PaginatedAsync(...) — for paginated/infinite scroll (see uno-mvux-pagination skill)The reference page covers operators like Where, Select, and AsFeed. These operate on individual items in the collection.
For step-by-step examples:
uno_platform_docs_fetch(sourcePath="external/uno.extensions/doc/Learn/Mvux/Walkthrough/ListFeed.howto.md")
This covers loading a list, showing it with FeedView, filtering with Where, and when to use feeds vs states.
The how-to page shows how to bind IListFeed<T> to ListView via FeedView and access items through {Binding Data}.
IListFeed<T> is read-only — use IListState<T> for add/remove/updateValueTask<IImmutableList<T>> (from System.Collections.Immutable)Where and Select work on individual items, not the list itselfIListFeed<T> when data is pulled from a service and is read-onlyIListState<T> when you need to edit the collection client-sideAll item types used in IListFeed<T> MUST support key equality via Uno.Extensions.Equality.IKeyEquatable<T>. Without key equality, MVUX cannot distinguish between a modified entity and a completely different one, causing full list re-renders instead of granular item updates (flickering, lost scroll position, broken animations).
For partial record types, key equality is auto-generated when the record has a property named Id or Key:
public partial record Person(Guid Id, string Name, int Age);
// IKeyEquatable<Person> is generated automatically — Id is the key
Use [Key] attribute when the key property has a different name, or for composite keys:
public partial record OrderLine(
[property: Key] Guid OrderId,
[property: Key] int LineNumber,
string Product,
decimal Price);
Either Uno.Extensions.Equality.KeyAttribute or System.ComponentModel.DataAnnotations.KeyAttribute can be used.
Configure which property names are auto-detected as keys:
[assembly: ImplicitKeyEquality("Id", "Key", "EntityId")]
If auto-generation causes issues on a specific type:
[ImplicitKeys(IsEnabled = false)]
public partial record MyItem(Guid Id, string Name);
partial record (or manually implement IKeyEquatable<T>)KeyEquals returns true when two instances represent the same entity, even if other properties differ