I like to keep a rough mapping of interesting concepts and implementations that implement some variants of that concept.
For example Component encapsulation is a concept, Polymer, React etc. are implementations. Virtual DOM is a concept, React, mithril, vdom etc. are implementations. Unit testing is a concept, mocha, rspec etc. are implementations, Homoiconic syntax is a concept, clojure is an implementation etc.
I can not keep track of details of all implementations of all concepts, so I keep track of which implementations have the most community traction (in Hashnode, hacker news, echo js etc.) and which concepts are relevant to the problem domains that I am working on or am likely to work on in the next 1-2 months. I also usually restrict my catalog to the implementations that are available in languages I am familiar with or am planning to gain familiarity with, unless the implementation is so good that it's existence in itself would be a compelling reason to learn a language.
Based on the above I prioritize my learning list. I usually defer going deep into the implementation details until I actually have a problem at hand where I can apply the same - but having a basic overview of the use case helps me associate a concept with a problem as it becomes available and then I would figure out which is the best implementation, what are the cons of the implementations which have less traction etc.