mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-10 17:59:43 +08:00
fix: correct SwiftUI skill ViewModel injection and Equatable comparison
Fix ItemListView to accept viewModel via init with default parameter so previews can inject mocks. Fix ExpensiveChartView Equatable to compare full array instead of only count.
This commit is contained in:
parent
f5149d84ec
commit
9d8e4b5af8
@ -59,7 +59,11 @@ final class ItemListViewModel {
|
||||
|
||||
```swift
|
||||
struct ItemListView: View {
|
||||
@State private var viewModel = ItemListViewModel()
|
||||
@State private var viewModel: ItemListViewModel
|
||||
|
||||
init(viewModel: ItemListViewModel = ItemListViewModel()) {
|
||||
_viewModel = State(initialValue: viewModel)
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
List(viewModel.items) { item in
|
||||
@ -215,10 +219,10 @@ For views with expensive bodies, conform to `Equatable` to skip unnecessary re-r
|
||||
|
||||
```swift
|
||||
struct ExpensiveChartView: View, Equatable {
|
||||
let dataPoints: [DataPoint]
|
||||
let dataPoints: [DataPoint] // DataPoint must conform to Equatable
|
||||
|
||||
static func == (lhs: Self, rhs: Self) -> Bool {
|
||||
lhs.dataPoints.count == rhs.dataPoints.count
|
||||
lhs.dataPoints == rhs.dataPoints
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
@ -233,13 +237,11 @@ Use `#Preview` macro with inline mock data for fast iteration:
|
||||
|
||||
```swift
|
||||
#Preview("Empty state") {
|
||||
ItemListView()
|
||||
.environment(ItemListViewModel(repository: EmptyMockRepository()))
|
||||
ItemListView(viewModel: ItemListViewModel(repository: EmptyMockRepository()))
|
||||
}
|
||||
|
||||
#Preview("Loaded") {
|
||||
ItemListView()
|
||||
.environment(ItemListViewModel(repository: PopulatedMockRepository()))
|
||||
ItemListView(viewModel: ItemListViewModel(repository: PopulatedMockRepository()))
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user