I'm currently taking the course "How to Code: Simple Data" (https://www.edx.org/course/how-code-simple-data-ubcx-htc1x) which is based on the book "How to Design Programs" (https://htdp.org/2018-01-06/Book/).
If you have taken this course (or read the book), can you share how you used the recipes in designing a React program? A concrete example will be very helpful.
SICP, although an excellent book, is not a good introduction to programming.
 thoroughly explains why
[2,3] based on How To Design Programs  is a much better intro; you should read SICP after completing this
DrRacket IDE  + the SICP compt language  and you can start writing it instantly in a well built and maintained environment that’s racket based and pretty fleshed out library wise, certainly nothing compared to Clojure but among the rest, it’s the best (imo), I recall Carmack writing a server in Racket for fun and praising the experience a few years back.
 - https://racket-lang.org
Additionally, if SICP proves too slow going or difficult math wise  you can always use drracket for HtDP  and it’s corresponding misnamed edX course(s)  and later on, PLaI .
I am not an expert, but maybe because of that I believe that I can offer valuable advice to those who are totally new to functional programming (or feel that they are missing something), and want to get the core basics down cold without getting drowned in accidental complexity, do yourself a favor and start with edx's free moocs "How To Code"  , which are based on "How To Design Programs" . After that, you will cruise through the recommended classics above.
If interested in why if you are an FP newbie said material is superior to SICP , read the pdf paper "The Structure and Interpretation of the Computer Science Curriculum" 
toshThe course is taught by Gregor Kiczales (https://en.wikipedia.org/wiki/Gregor_Kiczales) prvsly at Xerox Parc and co-author of the CLOS specification.
For learning how to program, How To Code  (based on How to Design Programs ) is tragically underrated given that it's hands down the best approach to learn how to program (actually, more importantly, how to think about programming) of the many I have looked at. Wish I had known this years ago. Rarely the best learning resources are widely know, so sad.
I decided to give this course a go after reading the eye-opening paper The Structure and Interpretation of the Computer Science Curriculum , and then discovered the edx course in HN  .
Although having programmed for many years it totally changed the way I look at programming; I followed this with the sadly unfinished but still excellent How to Design Classes , which consistently extends this initially FP approach to OO. To check how this approach is language neutral, have a look at Design Recipes in C .
Another neglected but wonderful resource is MIT OCW Elements of Software Construction (the 2008 version) , which, like the above, is centered around design rather than coding.
What did I get out of all this? A systematic approach to programming.
Thank you for adding that — I didn't know the edX courses were still online under a different name! The links from wikibob's comment for those interested:
I also love Gregor's teaching style and philosophy. It clicked with me and felt obvious and natural in a way the book never did.
Just wanted to note that HtDP is the best pedegogy for teaching the foundations of CS that I've ever found.
However, the book really needs professional editing.
Instead, take a look at the Intro CS classes from University of British Columbia .
They are taught by the excellent Gregor Kiczales, and directly follow the course structure from HtDP, in an extremely learner-friendly way. Absolutely the best online course I've ever done, Gregor really put an enormous amount of effort into doing this right.
Just to note, while the classes are part of a paid program at EdX, you can enroll in the individual classes for free. I went through the first one a few years ago and really enjoyed it.
You can take a look at the book How To Design Programs (HTDP) . It's similar. The 2nd edition printed book is going to be released soon . There is a paper from the authors of HTDP comparing it to SICP . By the way, there is an couple of online courses at EDX that covers content of HTDP .
The approach in this book is incredibly important and deserves far wider awareness than it has had so far.
Unfortunately the book itself is less than ideal for working through directly, it would benefit greatly from the polish of professional editing.
However, Gregor Kiczales of University of British Columbia has a absolutely top notch class he teaches based on the book. It's available free on EdX: https://www.edx.org/course/how-code-simple-data-ubcx-htc1x Don't be put off like I was at first by the mass-market title ("How to Code").