-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proper Lifecycles #37
Comments
So looking at the Vue.js lifecycle, I think I've gotten a decent idea of where Lifecycles could be applied in KO. Overall, there's no over-arching / explicit lifecycle for applyBindings. However, we can apply life cycles to binding handlers and components. Here's a first crack at it. Binding handlers hooks
Components
|
Or how about a Hooks API instead? Those seem all the rage these days. React now uses useState to track observable state, useEffect to track computed side effects, and useMemo to track pure computed values. It's so cool that they found away to use observable primitives to avoid needing those pesky lifecycle functions at all. I even checked out the prior art section of their Documentation and they most pulled this idea from previous work of React focused libraries like Recompose and observable streams like RxJS. It's a good thing since before React I probably would never pictured a world without lifecycle methods that could work off ideas as simple as useState, useEffect, and useMemo. More that you can make stateful components with just a simple function. Just a function. The future is here. Maybe there is a way Knockout can enter modern 2019 JS dev too with ko.observable, ko.computed, and ko.pureComputed. Sarcasm aside. Don't go too far down this rabbit hole. Patterns are like hats. They go in and out of fashion. Keep it true to the fundamentals. It was only a matter of time before React acknowledged Knockout had the right pattern all along. Just don't expect them to admit it. |
Noting @vvs comment:
The text was updated successfully, but these errors were encountered: