But I learn way more if I find a problem I want to solve. Then, I find my way through countless online resources and it's so much more effective than reading a book from beginning to end (which I can't do anyway).
Just an example: when I got into JS Promises/Generators/Iterators/Async/Await I read more than 100 online sources. I read multiple articles about the same topic again and again just because I didn't like the example of one author or there was an interesting detail in the other version. Getting just one book, means just one author and yes I love it to dive into one book on the plane. But nowadays with the Internet books are overrated. I remember going through the book store when I was a kid and buying an Assembler book for my Commodore Amiga for incredible 60 bucks—this was my only resource to knowledge next to print publications, they were expensive and maybe these memories make books still valuable to us.
Another thing I recently realized: reading source codes of popular libs (my last one was Koa). Once you get used to it it's not just very helpful but it teaches you so much and often there is an underlying goal (you want to use a lib you want to fully understand).
Books are not bad and for getting into something entirely new there are maybe the best start because in the moment you buy them you commit yourself to learn something from beginning to end. That's good and sometimes really necessary to fully comprehend new languages for example.