Thank you for you examples of dependency injection. I particularly like the example of passing dependencies as props. Makes for a nice reusable and universal component. You could potentially copy and paste that TODO component to a completely different app without changing a single character.
I am all for that kind of design. The thing I have a problem with is the overuse of classes and contact wrappers in React. Your app can start to get bloated very quickly! Instead of class based OOP I’ve been moving more towards functional programming. By dividing services up into smaller discrete functions, I get a lot more tree shaking action at build time. The OOP class based design and great on the back end but the front end should it deploy that same model, IMO.
In any case great article nevertheless!