pcolton
(Paul Colton)
1
Using the Todos example in TCA, if I make the todos array optional, I'm struggling to figure out how I then use the ForEach with that new optional array. I can't find a combination that works.
So in AppState I just made todos optional:
var todos: IdentifiedArrayOf<Todo>?
So the compiler shows this error for the reducer:
It seems the compiler has a hard time choosing the correct ForEach, and I noticed that the ForEach I need already does a return self.optional.reducer(....
pcolton
(Paul Colton)
2
This seems to work, but feels too verbose, am I missing something obvious?
todoReducer
.forEach(
state: \.self,
action: .self,
environment: { $0 }
)
.optional
.pullback(
state: \.todos,
action: /AppAction.todo(id:action:),
environment: { _ in TodoEnvironment() }
)
@pcolton That's probably the most straightforward way to handle his kind of double-nesting of state. We're working on some ways of improving the ergonomics of optional and enum-based state, though, that will hopefully clean this kind of thing up in the future!
shawnkoh
(Shawn Koh)
4
Are there any updates on how best to handle this?