Learning React: Modern Patterns for Developing React Apps, 2nd Edition (eBook PDF) download
Learning React: Modern Patterns for Developing React Apps, 2nd Edition (eBook PDF) download
https://ebooksecure.com/product/learning-react-modern-patterns-
for-developing-react-apps-2nd-edition-ebook-pdf/
http://ebooksecure.com/product/learning-react-modern-patterns-
for-developing-react-apps-2nd-edition-ebook-pdf/
http://ebooksecure.com/product/ebook-pdf-instructional-patterns-
strategies-for-maximizing-student-learning/
http://ebooksecure.com/product/ebook-pdf-reflections-patterns-
for-reading-and-writing-2nd-edition/
http://ebooksecure.com/product/ebook-pdf-patterns-of-modern-
chinese-history-by-charles-a-desnoyers/
Modern Sample Preparation for Chromatography, 2nd
Edition Serban Moldoveanu - eBook PDF
https://ebooksecure.com/download/modern-sample-preparation-for-
chromatography-2nd-edition-ebook-pdf/
http://ebooksecure.com/product/original-pdf-learning-for-
teaching-teaching-for-learning-with-student-resour/
http://ebooksecure.com/product/ebook-pdf-developing-content-area-
literacy-40-strategies-for-middle-and-secondary-classrooms-2nd-
edition/
https://ebooksecure.com/download/business-communication-
developing-leaders-for-a-networked-world-ebook-pdf/
http://ebooksecure.com/product/ebook-pdf-patterns-of-world-
history-combined-volume-2nd-edition/
c. Typechecking for React Applications
i. PropTypes
ii. Flow
iii. TypeScript
d. Test-Driven Development
i. TDD and Learning
e. Incorporating Jest
Copyright © 2020 Alex Banks and Eve Porcello. All rights reserved.
The views expressed in this work are those of the authors, and do not
represent the publisher’s views. While the publisher and the authors
have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and the
authors disclaim all responsibility for errors or omissions, including
without limitation responsibility for damages resulting from the use of
or reliance on this work. Use of the information and instructions
contained in this work is at your own risk. If any code samples or other
technology this work contains or describes is subject to open source
licenses or the intellectual property rights of others, it is your
responsibility to ensure that your use thereof complies with such
licenses and/or rights.
978-1-492-05172-5
[LSI]
Preface
This book is for developers who want to learn the React library while
learning the latest techniques currently emerging in the JavaScript
language. This is an exciting time to be a JavaScript developer. The
ecosystem is exploding with new tools, syntax, and best practices that
promise to solve many of our development problems. Our aim with this
book is to organize these techniques so you can get to work with React
right away. We’ll get into state management, React Router, testing, and
server rendering, so we promise not to introduce only the basics and
then throw you to the wolves.
This book does not assume any knowledge of React at all. We’ll
introduce all of React’s basics from scratch. Similarly, we won’t
assume that you’ve worked with the latest JavaScript syntax. This will
be introduced in Chapter 2 as a foundation for the rest of the chapters.
Along the way, check out the GitHub repository. All of the examples
are there and will allow you to practice hands-on.
Italic
Indicates new terms, URLs, email addresses, filenames, and file
extensions.
Constant width
Used for program listings, as well as within paragraphs to refer to
program elements such as variable or function names, databases,
data types, environment variables, statements, and keywords.
TIP
This element signifies a tip or suggestion.
NOTE
This element signifies a general note.
WARNING
This element indicates a warning or caution.
Using Code Examples
Supplemental material (code examples, exercises, etc.) is available for
download at https://github.com/moonhighway/learning-react.
This book is here to help you get your job done. In general, if example
code is offered with this book, you may use it in your programs and
documentation. You do not need to contact us for permission unless
you’re reproducing a significant portion of the code. For example,
writing a program that uses several chunks of code from this book does
not require permission. Selling or distributing examples from O’Reilly
books does require permission. Answering a question by citing this
book and quoting example code does not require permission.
Incorporating a significant amount of example code from this book into
your product’s documentation does require permission.
If you feel your use of code examples falls outside fair use or the
permission given above, feel free to contact us at
permissions@oreilly.com.
How to Contact Us
Please address comments and questions concerning this book to the
publisher:
Sebastopol, CA 95472
707-829-0104 (fax)
We have a web page for this book, where we list errata, examples, and
any additional information. You can access this page at
https://oreil.ly/learningReact_2e.
For news and information about our books and courses, visit
http://oreilly.com.
Acknowledgments
Our journey with React wouldn’t have started without some good old-
fashioned luck. We used YUI when we created the training materials
for the full-stack JavaScript program we taught internally at Yahoo.
Then in August 2014, development on YUI ended. We had to change
all our course files, but to what? What were we supposed to use on the
front-end now? The answer: React. We didn’t fall in love with React
immediately; it took us a couple hours to get hooked. It looked like
React could potentially change everything. We got in early and got
really lucky.
We appreciate the help of Angela Rufino and Jennifer Pollock for all
the support in developing this second edition. We also want to
acknowledge Ally MacDonald for all her editing help in the first
edition. We’re grateful to our tech reviewers, Scott Iwako, Adam
Rackis, Brian Sletten, Max Firtman, and Chetan Karande.
There’s also no way this book could have existed without Sharon
Adams and Marilyn Messineo. They conspired to purchase Alex’s first
computer, a Tandy TRS 80 Color Computer. It also wouldn’t have
made it to book form without the love, support, and encouragement of
Jim and Lorri Porcello and Mike and Sharon Adams.
When React was first released, there was a lot of conversation around
whether it was good, and there were many skeptics. It was new, and the
new can often be upsetting.
To respond to these critiques, Pete Hunt from the React team wrote an
article called “Why React?” that recommended that you “give it
[React] five minutes.” He wanted to encourage people to work with
React first before thinking that the team’s approach was too wild.
Yes, React is a small library that doesn’t come with everything you
might need out of the box to build your application. Give it five
minutes.
Yes, in React, you write code that looks like HTML right in your
JavaScript code. And yes, those tags require preprocessing to run in a
browser. And you’ll probably need a build tool like webpack for that.
Give it five minutes.
A Strong Foundation
Whether you’re brand new to React or looking to this text to learn
some of the latest features, we want this book to serve as a strong
foundation for all your future work with the library. The goal of this
book is to avoid confusion in the learning process by putting things in a
sequence: a learning roadmap.
Before digging into React, it’s important to know JavaScript. Not all of
JavaScript, not every pattern, but having a comfort with arrays, objects,
and functions before jumping into this book will be useful.
In the next chapter, we’ll look at newer JavaScript syntax to get you
acquainted with the latest JavaScript features, especially those that are
frequently used with React. Then we’ll give an introduction to
functional JavaScript so you can understand the paradigm that gave
birth to React. A nice side effect of working with React is that it can
make you a stronger JavaScript developer by promoting patterns that
are readable, reusable, and testable. Sort of like a gentle, helpful
brainwashing.
From there, we’ll cover foundational React knowledge to understand
how to build out a user interface with components. Then we’ll learn to
compose these components and add logic with props and state. We’ll
cover React Hooks, which allow us to reuse stateful logic between
components.
Once the basics are in place, we’ll build a new application that allows
users to add, edit, and delete colors. We’ll learn how Hooks and
Suspense can help us with data fetching. Throughout the construction
of that app, we’ll introduce a variety of tools from the broader React
ecosystem that are used to handle common concerns like routing,
testing, and server-side rendering.
Another huge event on the timeline was the release of React Fiber in
2017. Fiber was a rewrite of React’s rendering algorithm that was sort
of magical in its execution. It was a full rewrite of React’s internals that
changed barely anything about the public API. It was a way of making
React more modern and performant without affecting its users.
In the future, we’ll inevitably see more change, but one of the reasons
for React’s success is the strong team that has worked on the project
over the years. The team is ambitious yet cautious, pushing forward-
thinking optimizations while constantly considering the impact any
changes to the library will send cascading through the community.
As changes are made to React and related tools, sometimes there are
breaking changes. In fact, future versions of these tools may break
some of the example code in this book. You can still follow along with
the code samples. We’ll provide exact version information in the
package.json file so that you can install these packages at the correct
version.
Beyond this book, you can stay on top of changes by following along
with the official React blog. When new versions of React are released,
the core team will write a detailed blog post and changelog about
what’s new. The blog has also been translated into an ever-expanding
list of languages, so if English isn’t your native language, you can find
localized versions of the docs on the languages page of the docs site.
To install, head over to the GitHub repository. There, you’ll find links
to the Chrome and Firefox extensions.
Once installed, you’ll be able to see which sites are using React.
Anytime the React icon is illuminated in the browser toolbar as shown
in Figure 1-1, you’ll know that the site has React on the page.
Another Random Scribd Document
with Unrelated Content
The Project Gutenberg eBook of
Metamorphosis
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.
Title: Metamorphosis
Language: English
By Charles V. de Vet
One more city. The pattern went on. One more city to search for a
man I did not know, whose face I would not recognize. I had no
copy of either his fingerprints or encephalograph, or any other clue
to his identity.
Yet he had to be found.
At one time he had been my best friend. His name was Howard
Zealley then. He wouldn't be using the same name now.
And the "bug" in his brain would by this time have made him a
stranger.
There was only one way the job could be done: I had to make
contact—even though I might not be aware of it at the time—reveal
who I was, and hope he'd come out after me.
I rented a room in a cheap hotel. But not so cheap that it wouldn't
have a grid connection with information service.
I wrote my name big on the register: MAX CALOF. There was always
the chance that he would see it. He would remember the name.
The room was small, a standard "living-in" cubicle. Which was all
right. I didn't intend to sleep here. I hadn't slept in nine years now—
a year before the chase began. I kicked off my saddle shoes and
walked on stockinged feet to the vid coin slot and dropped in a half
dollar.
The screen flickered once and the face of a beautiful, smiling woman
came into focus. "May I help you, sir?" she asked in a pleasant, very
friendly voice.
I realized that the woman was not actually speaking, as she
appeared to be doing. She was merely a woman image, with her
voice and facial expressions synchronized in some way with the word
impulses coming from information central.
I stretched out on the bed, folding the pillow under my head to have
an unobstructed view of the screen. "Give me the names of the city's
two hundred most prominent male citizens," I said.
There was no sign of surprise on the woman face, but I got the
usual expressive long pause from central. The request was unusual.
Central relays always had trouble with the proper definition of
"prominent."
"Any particular category?" the woman image finally asked.
"All categories," I answered.
Another pause. Even a mechanical brain would take a bit of time to
assemble that information, but get it I would.
After a while the woman began. "Edward Anderson. Russell Baker.
Joseph Dillon. Francis...." As her gently modulated voice went on, I
closed my eyes, keeping my mind blank, letting each name pass
without resistance through my consciousness. Sometimes a hunch
came that way. There was no need to make a written list. I had total
recall.
I became aware that I had opened my shirt collar and that I was
perspiring. I hadn't noticed how hot the day was or that the room
had no air conditioning. I took a minute to concentrate. The
perspiration dried and my body adjusted itself to the room's
temperature and humidity. When I was comfortable again, I
returned my attention to the woman's voice.
At the end of the reading, no name had stayed with me. I opened
my eyes. "Eliminate all except those within the age range of twenty
to forty," I said. Zealley would be thirty-seven by now—but probably
appear younger. "Got that?"
"Yes sir."
"How many left?" I asked.
"Sixty-four."
It was always a temptation to cut the list further. I was weary of the
seemingly endless repetition of the same routine and the frustrating
lack of any results. Eight years is a long time to search for a man.
Yet I could not afford to be careless. I was gambling everything on
my having figured out the way Zealley's mind operated, how he
would act, where he would hide. When the woman finished
speaking, I walked to the vid and switched it off.
I noted by the wall clock that it was almost noon. I hadn't had
breakfast yet. In the back of my mind, as I ordered a meal, was the
certainty that someday this appetite too would grow sated and dull.
There were so few satisfactions left....
The first name on my list was Edward Anderson. The city's mayor. It
took me two hours to get into his office, and two minutes to be on
my way out again. I had asked my questions and met the usual
blank response.
On the street I spent another hour strolling through the shopping
district. No shadower picked me up.
Which pretty well eliminated Anderson—or anyone in close contact
with him.
Second name, Russell Baker. Industrialist. Minneapolis Mining &
Allied Products.
I got as far as his secretary, John Roesler.
"What can I do for you?" Roesler asked. He was a big-boned,
handsome man, with an air of sleepy indolence. He cleaned and
trimmed his fingernails with a small gold penknife.
"I'd like to see Mr. Baker," I said.
"What about?"
"Confidential business."
"No one gets in to see a man like Mr. Baker that easy. If they could,
he'd be pestered by every crackpot in town."
This was as far as I was going to get. I had to make the best of it.
"Will you give him a message then?" I asked.
Roesler shrugged. "If I think he should have it."
"I would advise you to deliver it," I said making my tone as
impressive as possible. "If he doesn't get it, you may be out of a
job."
His eyebrows raised slightly.
"Tell him," I said, "that Max Calof wants to see him," and spelled my
last name for him.
"And what should I say you want to see him about?" I had caught a
slight break in Roesler's composure.
"About a mutual friend—Howard Zealley," I replied. "I think he'll be
interested."
Roesler hid a yawn behind a well-manicured hand. "We'll see," he
said, and I went back out.
Twice within ten minutes I observed the same pale-faced youth
trailing me, and my pulse gave a great racing bound. This could be
it.
I stopped and studied the men's hats in a shop window. From the
side of my eye I saw the youth stop also. He leaned against a traffic
light stanchion and kicked idly at a scrap of paper on the sidewalk.
I wandered through a department store, stopping to purchase a
toothbrush and a handkerchief, and he followed, keeping always a
discreet distance behind. My last doubt was removed. I returned to
my hotel. With luck, the hunter would now become the hunted.
In my room I pulled a grip from under the bed and took out a
rubber-handled screwdriver and a pair of pliers, a pocket knife,
several lengths of copper wire, and a small instrument in a black
case about the size of my fist. Climbing on a straight-back chair, I
removed the frosted globe from the room's center light. I bared the
wires, carefully spliced on two pieces of wire, connected the black
box, and replaced the globe.
I had a little more trouble with the electrical clock's wiring, but at
the end I was satisfied. The time was two-fifteen. I made my setting
for three o'clock. Zealley should be here before then. If not, I could
always set the timing back.
There was nothing to do now except wait.
Nearly a half hour passed from the time I finished my preparations,
and I was beginning to think Zealley would be late, when the door of
my compartment was kicked savagely open.
The man who followed the kick was lean and dark, with wavy brown
hair combed meticulously into place. A bent nose dispelled any
illusion of softness.
I was disappointed. If this was Zealley, it was not at all the way I
had expected him to look. I had thought he would be more polished
perhaps, more intelligent, with more of the outward signs of
success.
This weighing I did with a fleeting glance, and passed to the two
men who followed my first visitor: Roesler and the pale-faced youth.
Roesler was wearing a yellow hat.
I swung my legs over the side of the bed where I had been lying
and sat up. "Come in," I said.
The sarcasm was not wasted on Roesler. He kept his gaze on me,
but spoke to the two men with him. "Stay by the door, George," he
ordered the boy. "You, Steve," he addressed the lean man, "get on
the other side of him. Stay close." He let himself ease into the
lounge chair behind him.
I decided to stir things up a bit. "I see you brought a boy," I said,
nodding at the one by the door. "This might turn out to be a man's
job."
Roesler glanced aside at the youth, whose lips pulled away from his
teeth and eyes filled with quick hate. He pulled a switch-blade knife
from his pocket and snapped it open.
I found myself making a swift reappraisal. The lad was not the
simple hood type I had first judged him to be. There was a flat look
about the wide whites of his eyes that warned of something apart
from courage.
"Not yet, George," Roesler said, and his voice, though almost gentle,
stopped the boy before he took a step.
Roesler pulled his penknife from a coat pocket and began trimming
his nails.
"Someday you're going to run out of fingernails," I said.
Roesler laughed soundlessly, amused.
I glanced unobtrusively at the clock. Ten minutes to three. Time
passed slowly in a situation like this.
Roesler regarded me speculatively. "You don't seem very nervous,"
he said.
"Should I be?"
"I would think so," he said. "If I were in your position, I think I'd be
nervous."
"Would you?"
"Take off your clothes," he said, with no change of tone.
I took in a long breath and began opening my shirt. Another glance
at the clock told me I needed at least eight more minutes. I had to
stall.
He might have said dull, stupid, cloddish old Max. The words would
have better matched the tone of his voice. At that, he might be
right. The authorities back on our home world of New Nebraska had
said pretty much the same thing, only more diplomatically.
"You and Zealley are different," I'd been told. "That was one of the
reasons we made you a team, originally. Zealley is clever and
imaginative, but basically an egotist. A to-hell-with-the-other-fellow
character. Fortunately, you're not like him. You're a man who accepts
his responsibilities, a man with a strong sense of duty. We know we
can trust you." Whether it was actually trust or only that they had
little choice, I had not let myself decide.
"We had such high hopes." Zealley was reminiscing, speaking more
to himself than to me.
We had. We'd been a two-man survey crew, mapping out new
territory for the future expansion of the human race. On a world
listed only as TR768-L-14 on the star maps, we had run into disaster.
We found the planet unfit for human habitation, but not before we'd
been bitten several times by things we never did see.
No infection had resulted and we thought little about it, until we
were a good part of the way home. Gradually then we noticed a
quickening of our sensory processes, a well-being of body too
pronounced to be normal. During the next several weeks of flight,
Zealley wrote a historical novel that I was certain would turn out to
be a classic. I found myself mastering, without difficulty, higher
math, which had always been beyond me before.
At the end of the third month we stopped needing sleep. During the
days and nights that followed we conversed brilliantly on subjects
that had not interested us before, and the depth of which we
couldn't have fathomed if they had interested us. We were at a loss
to explain the reason for the change, though we knew it tied in
somehow with our stay on TR768-L-14, and probably with the things
that had bitten us. The cause was of secondary importance; the
marvel of the reality was what intrigued us. We looked forward with
poorly restrained excitement to displaying our new mental and
physical dexterity.
Updated editions will replace the previous one—the old editions will
be renamed.
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.F.
1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.
ebooksecure.com