Need the ability to add event handling to the Component
BarredEwe opened this issue · 3 comments
Checklist
- Reviewed the README and documents.
- Searched existing issues for ensure not duplicated.
Description
I would like to be able to add event handling directly to the component.
Example:
struct HelloMessage: Component {
...
}
HelloMessage().on(.click) { ... }.cellNode
HelloMessage().on(.viewWillAppear) { ... }.cellNode
or
HelloMessage().cellNode.on(.click) { ... }
HelloMessage().cellNode.on(.viewWillAppear) { ... }
Motivation and Context
Allows you to make ViewController cleaner.
A Component
cannot have a state because it's a protocol.
It can be implemented by composition, but I don't like it because it complicates the API.
I have added this feature for myself. If anyone is interested, I can post a merge request with this feature.
https://github.com/BarredEwe/Carbon/tree/actions
Example:
struct TestView: Component {
...
}
class TestViewContent: UIView {
...
@IBAction func testButtonTapped(_ sender: UIButton) {
// Sending actions
ComponentAction(.custom(.buttonTapped), sender: self).invoke()
}
}
TestView(...)
.on(.custom(.buttonTapped)) { action in /*Do something*/ }
.cellNode
Congrats 🎉
I'll close this issue, but if you have further suggestions, please re-open it.