├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── FEATURE.yml
│ ├── FIX.yml
│ └── config.yml
└── PULL_REQUEST_TEMPLATE.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── images
└── logo.png
└── website
├── .gitignore
├── README.md
├── babel.config.js
├── blog
├── 2019-05-28-first-blog-post.md
├── 2019-05-29-long-blog-post.md
├── 2021-08-01-mdx-blog-post.mdx
├── 2021-08-26-welcome
│ ├── docusaurus-plushie-banner.jpeg
│ └── index.md
└── authors.yml
├── docs
├── intro.md
├── tutorial-basics
│ ├── _category_.json
│ ├── congratulations.md
│ ├── create-a-blog-post.md
│ ├── create-a-document.md
│ ├── create-a-page.md
│ ├── deploy-your-site.md
│ └── markdown-features.mdx
└── tutorial-extras
│ ├── _category_.json
│ ├── img
│ ├── docsVersionDropdown.png
│ └── localeDropdown.png
│ ├── manage-docs-versions.md
│ └── translate-your-site.md
├── docusaurus.config.js
├── package-lock.json
├── package.json
├── sidebars.js
├── src
├── components
│ └── HomepageFeatures
│ │ ├── index.tsx
│ │ └── styles.module.css
├── css
│ └── custom.css
└── pages
│ ├── index.module.css
│ ├── index.tsx
│ └── markdown-page.md
├── static
├── .nojekyll
└── img
│ ├── docusaurus.png
│ ├── favicon.ico
│ ├── logo.svg
│ ├── undraw_docusaurus_mountain.svg
│ ├── undraw_docusaurus_react.svg
│ └── undraw_docusaurus_tree.svg
└── tsconfig.json
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # This is a comment.
2 | # Each line is a file pattern followed by one or more owners.
3 |
4 | # These owners will be the default owners for everything in
5 | # the repo. Unless a later match takes precedence,
6 | # @global-owner1 and @global-owner2 will be requested for
7 | # review when someone opens a pull request.
8 | * @nabeel-shakeel @Sheraz064-ai
9 |
10 | # Order is important; the last matching pattern takes the most
11 | # precedence. When someone opens a pull request that only
12 | # modifies JS files, only @js-owner and not the global
13 | # owner(s) will be requested for a review.
14 | # *.js @js-owner
15 |
16 | # You can also use email addresses if you prefer. They'll be
17 | # used to look up users just like we do for commit author
18 | # emails.
19 | # *.go docs@example.com
20 |
21 | # Teams can be specified as code owners as well. Teams should
22 | # be identified in the format @org/team-name. Teams must have
23 | # explicit write access to the repository. In this example,
24 | # the octocats team in the octo-org organization owns all .txt files.
25 | # *.txt @octo-org/octocats
26 |
27 | # In this example, @doctocat owns any files in the build/logs
28 | # directory at the root of the repository and any of its
29 | # subdirectories.
30 | # /build/logs/ @doctocat
31 |
32 | # The `docs/*` pattern will match files like
33 | # `docs/getting-started.md` but not further nested files like
34 | # `docs/build-app/troubleshooting.md`.
35 | # docs/* docs@example.com
36 |
37 | # In this example, @octocat owns any file in an apps directory
38 | # anywhere in your repository.
39 | # apps/ @octocat
40 |
41 | # In this example, @doctocat owns any file in the `/docs`
42 | # directory in the root of your repository and any of its
43 | # subdirectories.
44 | # /docs/ @doctocat
45 |
46 | # In this example, any change inside the `/scripts` directory
47 | # will require approval from @doctocat or @octocat.
48 | # /scripts/ @doctocat @octocat
49 |
50 | # In this example, @octocat owns any file in the `/apps`
51 | # directory in the root of your repository except for the `/apps/github`
52 | # subdirectory, as its owners are left empty.
53 | # /apps/ @octocat
54 | # /apps/github
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/FEATURE.yml:
--------------------------------------------------------------------------------
1 | name: Feature Request
2 | description: Suggest a topic, expert or any idea for improving all-about-react
3 | title: "[Feature]: "
4 | labels: ["feature"]
5 | assignees:
6 | - nabeel-shakeel
7 | body:
8 | - type: markdown
9 | attributes:
10 | value: |
11 | Thanks for taking the time to fill out this feature request! To address this request as fast as possible, we need some information.
12 | - type: input
13 | id: contact
14 | attributes:
15 | label: Contact Details
16 | description: How can we get in touch with you if we need more info?
17 | placeholder: ex. nabeel.shakeel@techwards.co
18 | validations:
19 | required: false
20 | - type: dropdown
21 | id: feature_type
22 | attributes:
23 | label: Feature Type
24 | description: Select the feature type
25 | options:
26 | - Website Functionality
27 | - Documentation
28 | - CI/CD
29 | - Something else!
30 | validations:
31 | required: true
32 | - type: textarea
33 | id: description
34 | attributes:
35 | label: Description
36 | description: Provide a short description of what you are proposing
37 | placeholder: Give arguments for why the resource or expert should be included
38 | validations:
39 | required: true
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/FIX.yml:
--------------------------------------------------------------------------------
1 | name: Fix Report
2 | description: File a fix report
3 | title: "[Fix]: "
4 | labels: ["bug", "triage", "fix"]
5 | assignees:
6 | - nabeel-shakeel
7 | body:
8 | - type: markdown
9 | attributes:
10 | value: |
11 | Thanks for taking the time to fill out this fix report! To address this fix as fast as possible, we need some information
12 | - type: input
13 | id: contact
14 | attributes:
15 | label: Contact Details
16 | description: How can we get in touch with you if we need more info?
17 | placeholder: ex. nabeel.shakeel@techwards.co
18 | validations:
19 | required: false
20 | - type: textarea
21 | id: what-happened
22 | attributes:
23 | label: What happened?
24 | description: Also tell us, what did you expect to happen?
25 | placeholder: Tell us what you see!
26 | value: "A bug happened!"
27 | validations:
28 | required: true
29 | - type: markdown
30 | attributes:
31 | value: '## Screenshots'
32 | - type: markdown
33 | attributes:
34 | value: Add screenshot of bug or point to the portion where you want to fix
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: All About React Support
4 | url: https://github.com/Techwards/all-about-react/discussions/17
5 | about: Please ask and answer questions here.
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
2 | ## Description
3 | This PR closes #ISSUE_NUMBER
4 |
5 | Changes proposed in this pull request:
6 | - Item 1
7 | - Item 2
8 | - Item 3
9 |
10 | ## Checklist
11 | - [ ] Make sure you are making a pull request against the **main branch**
12 | - [ ] Check the PR title and branch naming structure matched with our [guidelines](../CONTRIBUTING.md)
13 | - Please check the type of change your PR introduces:
14 | - [ ] New feature
15 | - [ ] Bug in content and documentation
16 | - [ ] Fix in content and documentation
17 | - [ ] Other changes
18 |
19 | ## Screenshots
20 | Add updated screenshots of `README.md`
21 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | We as members, contributors, and leaders pledge to make participation in our
6 | community a harassment-free experience for everyone, regardless of age, body
7 | size, visible or invisible disability, ethnicity, sex characteristics, gender
8 | identity and expression, level of experience, education, socio-economic status,
9 | nationality, personal appearance, race, religion, or sexual identity
10 | and orientation.
11 |
12 | We pledge to act and interact in ways that contribute to an open, welcoming,
13 | diverse, inclusive, and healthy community.
14 |
15 | ## Our Standards
16 |
17 | Examples of behavior that contributes to a positive environment for our
18 | community include:
19 |
20 | * Demonstrating empathy and kindness toward other people
21 | * Being respectful of differing opinions, viewpoints, and experiences
22 | * Giving and gracefully accepting constructive feedback
23 | * Accepting responsibility and apologizing to those affected by our mistakes,
24 | and learning from the experience
25 | * Focusing on what is best not just for us as individuals, but for the
26 | overall community
27 |
28 | Examples of unacceptable behavior include:
29 |
30 | * The use of sexualized language or imagery, and sexual attention or
31 | advances of any kind
32 | * Trolling, insulting or derogatory comments, and personal or political attacks
33 | * Public or private harassment
34 | * Publishing others' private information, such as a physical or email
35 | address, without their explicit permission
36 | * Other conduct which could reasonably be considered inappropriate in a
37 | professional setting
38 |
39 | ## Enforcement Responsibilities
40 |
41 | Community leaders are responsible for clarifying and enforcing our standards of
42 | acceptable behavior and will take appropriate and fair corrective action in
43 | response to any behavior that they deem inappropriate, threatening, offensive,
44 | or harmful.
45 |
46 | Community leaders have the right and responsibility to remove, edit, or reject
47 | comments, commits, code, wiki edits, issues, and other contributions that are
48 | not aligned to this Code of Conduct, and will communicate reasons for moderation
49 | decisions when appropriate.
50 |
51 | ## Scope
52 |
53 | This Code of Conduct applies within all community spaces, and also applies when
54 | an individual is officially representing the community in public spaces.
55 | Examples of representing our community include using an official e-mail address,
56 | posting via an official social media account, or acting as an appointed
57 | representative at an online or offline event.
58 |
59 | ## Enforcement
60 |
61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
62 | reported to the community leaders responsible for enforcement at
63 | nabeel.shakeel@techwards.co.
64 | All complaints will be reviewed and investigated promptly and fairly.
65 |
66 | All community leaders are obligated to respect the privacy and security of the
67 | reporter of any incident.
68 |
69 | ## Enforcement Guidelines
70 |
71 | Community leaders will follow these Community Impact Guidelines in determining
72 | the consequences for any action they deem in violation of this Code of Conduct:
73 |
74 | ### 1. Correction
75 |
76 | **Community Impact**: Use of inappropriate language or other behavior deemed
77 | unprofessional or unwelcome in the community.
78 |
79 | **Consequence**: A private, written warning from community leaders, providing
80 | clarity around the nature of the violation and an explanation of why the
81 | behavior was inappropriate. A public apology may be requested.
82 |
83 | ### 2. Warning
84 |
85 | **Community Impact**: A violation through a single incident or series
86 | of actions.
87 |
88 | **Consequence**: A warning with consequences for continued behavior. No
89 | interaction with the people involved, including unsolicited interaction with
90 | those enforcing the Code of Conduct, for a specified period of time. This
91 | includes avoiding interactions in community spaces as well as external channels
92 | like social media. Violating these terms may lead to a temporary or
93 | permanent ban.
94 |
95 | ### 3. Temporary Ban
96 |
97 | **Community Impact**: A serious violation of community standards, including
98 | sustained inappropriate behavior.
99 |
100 | **Consequence**: A temporary ban from any sort of interaction or public
101 | communication with the community for a specified period of time. No public or
102 | private interaction with the people involved, including unsolicited interaction
103 | with those enforcing the Code of Conduct, is allowed during this period.
104 | Violating these terms may lead to a permanent ban.
105 |
106 | ### 4. Permanent Ban
107 |
108 | **Community Impact**: Demonstrating a pattern of violation of community
109 | standards, including sustained inappropriate behavior, harassment of an
110 | individual, or aggression toward or disparagement of classes of individuals.
111 |
112 | **Consequence**: A permanent ban from any sort of public interaction within
113 | the community.
114 |
115 | ## Attribution
116 |
117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118 | version 2.0, available at
119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
120 |
121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct
122 | enforcement ladder](https://github.com/mozilla/diversity).
123 |
124 | [homepage]: https://www.contributor-covenant.org
125 |
126 | For answers to common questions about this code of conduct, see the FAQ at
127 | https://www.contributor-covenant.org/faq. Translations are available at
128 | https://www.contributor-covenant.org/translations.
129 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | ## Contributing
2 | You can contribute in the following ways:
3 | - Add a new react expert or topic
4 | - Suggest changes to the existing topic
5 | - Discuss ideas on github issues
6 | - Spread the word
7 |
8 | ## Guidelines
9 | - Adding everything about react is not the goal!
10 | - Right now we are focusing on the topics that are essential in every react project.
11 | - Do not add or suggest things you have not evaluated personally!
12 | - Do your research before suggesting any topic or expert. Give honest arguments for why the resource should be included.
13 | - One item per Pull Request
14 | - Adding one item like one topic or covering one expert per pull request makes it easy to maintain the repo.
15 | - Write meaningful commit messages
16 | - Look at the existing issues/pull requests before opening new ones
17 |
18 | ## Pull Request Protocols
19 | Please ensure your pull request adheres to the following guidelines:
20 | - For feature, follow this branch naming convention `feature-ISSUE_NUMBER-short-description-of-feature`
21 | - For example: `feature-1-contributor-guide-for-project`
22 | - For bug and doc update, follow `fix-ISSUE_NUMBER-short-description-of-fix`
23 | - PR title should follow the convention `Feature | ISSUE_NUMBER | Short Description Of Feature`
24 | - For example: `Feature | Issue #2 | Contributor Guide For Project`
25 | - For bugs and fixes, replace feature with `Fix` remaining will be the same
26 | - Keep PR descriptions short and simple
27 | - Link your PR with Github issue by using words `Closes #ISSUE_NUMBER` or `Fixes #ISSUE_NUMBER`, refer to this [doc](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)
28 | - Make an individual pull request for each issue
29 | - Check your spelling and grammar
30 |
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Techwards
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
31 |
32 |
33 | ## About The Project
34 | This Project is created to help developers master their concepts and expertise in React by learning from articles, talks, and podcasts from industry experts in this domain.
35 |
36 | It serves as a curated list of React material and content to help in learning react in-depth and build a solid foundation of programming concepts. We organized the material topic-wise and categorized it into articles, talks, and podcasts for now.
37 |
38 | 
39 |
40 |
41 | ## Experts
42 | These are the react experts to whom content and resources we are referring
43 |
89 |
90 | 
91 |
92 |
93 | ## Table of Contents
94 |
95 | - **[State and Props](#state-and-props)**
96 | - **[Hooks](#hooks)**
97 | - [useState](#use-state)
98 | - [useEffect](#use-effect)
99 | - [useCallback](#use-callback)
100 | - [useContext](#use-context)
101 | - [useDebugValue](#use-debug-value)
102 | - [useDeferredValue](#use-deferred-value)
103 | - [useEvent](#use-event)
104 | - [useId](#use-id)
105 | - [useImperativeHandle](#use-imperative-handle)
106 | - [useInsertionEffect](#use-insertion-effect)
107 | - [useLayoutEffect](#use-layout-effect)
108 | - [useMemo](#use-memo)
109 | - [useReducer](#use-reducer)
110 | - [useRef](#use-ref)
111 | - [useSyncExternalStore](#use-sync-external-store)
112 | - [useTransition](#use-transition)
113 | - **[Routing](#routing)**
114 | - [React Router](#react-router)
115 | - **[Styling](#styling)**
116 | - [CSS-in-JS](#css-in-js)
117 | - [Inline Styling](#inline-styling)
118 | - [Styled Components](#styled-components)
119 | - [CSS Modules](#css-modules)
120 | - [React Router](#react-router)
121 | - [Tailwind CSS](#tailwind-css)
122 | - **[Global State Management](#global-state-management)**
123 | - [Redux](#redux)
124 | - [Recoil](#recoil)
125 | - [Jotai](#jotai)
126 | - [Rematch](#rematch)
127 | - [Hookstate](#hook-state)
128 | - [MobX](#mobx)
129 | - [Zustand](#zustand)
130 | - **[Data Fetching](#data-fetching)**
131 | - [React Query](#react-query)
132 | - [SWR](#swr)
133 | - [RTK Query](#rtk-query)
134 | - [Apollo](#apollo)
135 | - **[Rendering](#rendering)**
136 | - **[Patterns](#patterns)**
137 | - [Composition vs Inheritance](#com-vs-int)
138 | - [Custom Hooks](#custom-hooks)
139 | - [Compound Component Pattern](#cmd-comp-pattern)
140 | - [Composition Components vs Configuration Components](#cc-vs-cc)
141 | - **[Testing](#testing)**
142 | - [React Testing Library](#react-testing-library)
143 | - [Jest](#jest)
144 | - [Enzyme](#enzyme)
145 | - **[React in Typescript](#react-in-typescript)**
146 | - **[Server Side Rendering](#server-side-rendering)**
147 | - [React Dom Server](#react-dom-server)
148 | - [NextJS](#next-js)
149 | - [Remix](#remix)
150 | - [Gatsby](#gatsby)
151 | - **[Security](#security)**
152 | - [Cyber Attacks](#cyber-attacks)
153 | - [Vulnerabilities](#vulnerabilities)
154 | - [Best Practices](#sec-best-practices)
155 | - **[Architecture](#architecture)**
156 | - **[Toolchains](#toolchains)**
157 | - [Create React App](#create-react-app)
158 | - [Vite](#vite)
159 | - [Nx](#nx)
160 | - **[Dockerization](#dockerization)**
161 |
162 | 
163 |
164 |
165 | ## State and Props [🔝](#table-of-contents)
166 |
167 | ### Blogs and Articles
168 | - 📜 [You Probably Don't Need Derived State by Brian Vaughn](https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#when-to-use-derived-state)
169 | - 📜 [Props vs State by Kent C. Dodds](https://kentcdodds.com/blog/props-vs-state)
170 | - 📜 [Don't Sync State. Derive It by Kent C. Dodds](https://kentcdodds.com/blog/application-state-management-with-react)
171 | - 📜 [Application State Management with React by Kent C. Dodds](https://kentcdodds.com/blog/application-state-management-with-react)
172 | - 📜 [State Colocation will make your React app faster by Kent C. Dodds](https://kentcdodds.com/blog/understanding-reacts-key-prop)
173 | - 📜 [Understanding React's key prop by Kent C. Dodds](https://kentcdodds.com/blog/use-state-lazy-initialization-and-function-updates)
174 | - 📜 [useState lazy initialization and function updates by Kent C. Dodds](https://kentcdodds.com/blog/use-state-lazy-initialization-and-function-updates)
175 | - 📜 [Should I useState or useReducer? by Kent C. Dodds](https://kentcdodds.com/blog/should-i-usestate-or-usereducer)
176 | - 📜 [How to implement useState with useReducer by Kent C. Dodds](https://kentcdodds.com/blog/how-to-implement-usestate-with-usereducer)
177 | - 📜 [My State Management Mistake by Kent C. Dodds](https://epicreact.dev/my-state-management-mistake/)
178 | - 📜 [How To Use and Not Use State By Brad Westfall](https://reacttraining.com/blog/how-to-use-and-not-use-state/)
179 | - 📜 [How is state related to the declarative approach in React? by Brad Westfall](https://reacttraining.com/blog/state-and-the-declarative-approach/)
180 |
181 | ### Talks
182 | - 🎥 [Using Composition in React to Avoid "Prop Drilling" By Michael Jackson](https://www.youtube.com/watch?v=3XaXKiXtNjw)
183 | - 🎥 [The Actor Model: a new mental model for React by Farzad YousefZadeh](https://portal.gitnation.org/contents/the-actor-model-a-new-mental-model-for-react)
184 | - 🎥 [setState, We Need to Talk! by Nikhil Sharma](https://portal.gitnation.org/contents/setstate-we-need-to-talk)
185 |
186 |
187 | ## Hooks [🔝](#table-of-contents)
188 |
189 | ### Blogs and Articles
190 | - 📜 [Why Do React Hooks Rely on Call Order by Dan Abramov](https://overreacted.io/why-do-hooks-rely-on-call-order/)
191 | - 📜 [Before You memo() by Dan Abramov](https://overreacted.io/before-you-memo/)
192 | - 📜 [A Complete Guide to useEffect by Dan Abramov](https://overreacted.io/a-complete-guide-to-useeffect/)
193 | - 📜 [Synchronizing with Effects by Dan Abramov](https://beta.reactjs.org/learn/synchronizing-with-effects)
194 | - 📜 [Making setInterval Declarative with React Hooks by Dan Abramov](https://overreacted.io/making-setinterval-declarative-with-react-hooks/)
195 | - 📜 [Reconciling the useEffect Tree By Ryan Florence](https://reacttraining.com/blog/react-effect-tree/)
196 | - 📜 [Using Hooks in Classes By Ryan Florence](https://reacttraining.com/blog/using-hooks-in-classes/)
197 | - 📜 [useEffect vs useLayoutEffect by Kent C. Dodds](https://kentcdodds.com/blog/useeffect-vs-uselayouteffect)
198 | - 📜 [React Hooks: Compound Components by Kent C. Dodds](https://kentcdodds.com/blog/compound-components-with-react-hooks)
199 | - 📜 [5 Tips to Help You Avoid React Hooks Pitfalls by Kent C. Dodds](https://kentcdodds.com/blog/react-hooks-pitfalls)
200 | - 📜 [When to useMemo and useCallback by Kent C. Dodds](https://kentcdodds.com/blog/usememo-and-usecallback)
201 | - 📜 [Myths about useEffect by Kent C. Dodds](https://epicreact.dev/myths-about-useeffect/)
202 | - 📜 [useEffect(fn, []) is not the new componentDidMount() by Brad Westfall](https://reacttraining.com/blog/useEffect-is-not-the-new-componentDidMount/)
203 | - 📜 [When do I use functions in a Hooks Dependency Array? By Brad Westfall](https://reacttraining.com/blog/when-to-use-functions-in-hooks-dependency-array/)
204 | - 📜 [Wins for Hooks By Brad Westfall](https://reacttraining.com/blog/wins-for-hooks/)
205 | - 📜 [Blog Claps, and lessons on Hooks By Brad Westfall](https://reacttraining.com/blog/blog-claps-and-lessons-on-hooks/)
206 |
207 | ### Talks
208 | - 🎥 [React Today and Tomorrow and 90% Cleaner React With Hooks by Dan Abramov](https://www.youtube.com/watch?v=dpw9EHDh2bM&list=RDCMUCz5vTaEhvh7dOHEyd1efcaQ&start_radio=1&rv=dpw9EHDh2bM&t=4)
209 | - 🎥 [90% Cleaner React With Hooks by Ryan Florence](https://youtu.be/wXLf18DsV-I)
210 | - 🎥 [Fun with React Hooks by Michael Jackson and Ryan Florence](https://youtu.be/1jWS7cCuUXw)
211 | - 🎥 [Modern React Workshop: Hooks and Suspense (Part 1) by Kent C. Dodds](https://www.youtube.com/watch?v=xcZXS_VEJS0)
212 | - 🎥 [Modern React Workshop: Hooks and Suspense (Part 2) by Kent C. Dodds](https://www.youtube.com/watch?v=NKAfuguroRY)
213 | - 🎥 [Live with Kent: TypeScriptifying the "Advanced React Hooks" workshop by Kent C. Dodds](https://www.youtube.com/watch?v=wsTKYr2acl8)
214 | - 🎥 [React Hook Pitfalls - React Rally 2019 by Kent C. Dodds](https://www.youtube.com/watch?v=VIRcX2X7EUk)
215 | - 🎥 [React useEffect - What goes in the dependency array? What do functions sometimes go in the array? By Brad Westfall](https://www.youtube.com/watch?v=NbzDb15j_WU)
216 | - 🎥 [Composing Behavior in React or Why React Hooks are Awesome by Michael Jackson](https://www.youtube.com/watch?v=nUzLlHFVXx0)
217 | - 🎥 [Hooks are a great abstraction model by Calin Tamas](https://portal.gitnation.org/contents/hooks-are-a-great-abstraction-model)
218 | - 🎥 [We Don’t Know How React State Hooks Work by Adam Klein](https://portal.gitnation.org/contents/we-dont-know-how-react-state-hooks-work-456)
219 | - 🎥 [Don't Forget React Memo by Khrystyna Landvytovych](https://portal.gitnation.org/contents/dont-forget-react-memo)
220 | - 🎥 [Requisite React: Learn how to use React Hooks, Suspense & JSX by Kent C. Dodds](https://www.youtube.com/watch?v=tO8qHlr6Wqg&list=PLNBNS7NRGKMHLTeH4qfD3F320GXfj97kc&index=1)
221 | - 🎥 [React's Tackle Box, Using the Right Hooks for the Job by Bryan Pitt](https://www.youtube.com/watch?v=uDguyp13pl8)
222 | - 🎥 [Build Modern React apps with Hooks, Suspense, Context, and Firebase by Jeff Huleatt](https://www.youtube.com/watch?v=Mi9aKDcpRYA&list=PLNBNS7NRGKMH-zMH-MG7wSszTThAKFi3S&index=11)
223 | - 🎥 [The Psychological Effects of useEffect by Sara Vieira](https://www.youtube.com/watch?v=0Mfk9k1eXME)
224 | - 🎥 [React without memo by Xuan Huang](https://www.youtube.com/watch?v=lGEMwh32soc&t=404s)
225 |
226 | ### Podcasts
227 | - 🎙️ [Realigning Your Model of React After Hooks With Dan Abramov](https://kentcdodds.com/chats/01/03/realigning-your-model-of-react-after-hooks-with-dan-abramov)
228 | - 🎙️ [Trying React Hooks for the first time with Dan Abramov](https://www.youtube.com/watch?v=G-aO5hzo1aw)
229 | - 🎙️ [Hooks are Mixins with Ryan Florence](https://spec.fm/podcasts/reactpodcast/6495881a)
230 |
231 | ## Rendering [🔝](#table-of-contents)
232 |
233 | ### Blogs and Articles
234 | - 📜 [Introducing the React Profiler By Brian Vaughn](https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html)
235 | - 📜 [Introducing the New React DevTools By Brian Vaughn](https://reactjs.org/blog/2019/08/15/new-react-devtools.html)
236 | - 📜 [React Inline Functions And Performance By Ryan Florence](https://reacttraining.com/blog/react-inline-functions-and-performance/)
237 | - 📜 [React Context and Re-Renders: React Take the Wheel By Ryan Florence](https://medium.com/@ryanflorence/react-context-and-re-renders-react-take-the-wheel-cd1d20663647)
238 | - 📜 [Fix the slow render before you fix the re-render by Kent C. Dodds](https://kentcdodds.com/blog/fix-the-slow-render-before-you-fix-the-re-render)
239 | - 📜 [React: "mount" vs "render"? By Brad Westfall](https://reacttraining.com/blog/mount-vs-render/)
240 | - 📜 [Portals with Context By Brad Westfall](https://reacttraining.com/blog/portals-with-context/)
241 | - 📜 [Flow Control in React By Brad Westfall](https://reacttraining.com/blog/flow-control-in-react/)
242 | - 📜 [Use a render prop by Michael Jackson](https://reactjs.org/docs/render-props.html)
243 |
244 | ### Talks
245 | - 🎥 [Concurrent Rendering in React by Andrew Clark and Brian Vaughn](https://www.youtube.com/watch?v=ByBPyMBTzM0)
246 | - 🎥 [Creating More Efficient React Views with Windowing By Brian Vaughn](https://www.youtube.com/watch?v=t4tuhg7b50I)
247 | - 🎥 [React Developer tooling By Brian Vaughn](https://www.youtube.com/watch?v=Mjrfb1r3XEM)
248 | - 🎥 [React Developer Tooling React Conf 2021 By Brian Vaughn](https://www.youtube.com/watch?v=oxDfrke8rZg)
249 | - 🎥 [Playing with React suspense and DevTools By Brian Vaughn](https://www.youtube.com/watch?v=5RzOiibu8sg)
250 | - 🎥 [Deep dive with the React DevTools profiler By Brian Vaughn](https://www.youtube.com/watch?v=nySib7ipZdk)
251 | - 🎥 [Why The Form? Data Mutations on the Web - RenderATL 2022 by Ryan Florence](https://www.youtube.com/watch?v=CbW6gGfXUE8)
252 | - 🎥 [Never Write Another HoC by Michael Jackson](https://www.youtube.com/watch?v=BcVAq3YFiuc)
253 | - 🎥 [Road to a Better UX with Suspense and Concurrent UI by Nikhil Sharma](https://www.youtube.com/watch?v=mTCjvL3x04k)
254 | - 🎥 [Cracking the Concurrent Mode by Sudhanshu Yadav](https://portal.gitnation.org/contents/cracking-the-concurrent-mode)
255 | - 🎥 [Beyond Virtual Lists: How to Render 100K Items with 100s of Updates/sec in React by Michel Weststrate](https://portal.gitnation.org/contents/beyond-virtual-lists-how-to-render-100k-items-with-100s-of-updatessec-in-react)
256 | - 🎥 [The Worlds Most Expensive React Component and How to Stop Writing It by Michael Chan](https://portal.gitnation.org/contents/the-worlds-most-expensive-react-component-and-how-to-stop-writing-it)
257 | - 🎥 [Inside Fiber: the in-depth overview you wanted a TLDR for by Matheus Albuquerque](https://portal.gitnation.org/contents/inside-fiber-the-in-depth-overview-you-wanted-a-tldr-for)
258 | - 🎥 [Let's Talk about Re-renders by Nadia Makarevich](https://portal.gitnation.org/contents/lets-talk-about-re-renders)
259 | - 🎥 [React Advanced Keynote: Performance is magic by Ken Wheeler](https://www.youtube.com/watch?v=t8svxxtUTl8)
260 | - 🎥 [Track and increase speed of your apps by Jessica Leach](https://www.youtube.com/watch?v=vDXF7iGEGzo)
261 | - 🎥 [An Overview of React's Reconciliation Algorithm by Elad Tzemach](https://www.youtube.com/watch?v=3_g_kv1PWXI)
262 |
263 | ### Podcasts
264 | - 🎙️ [Decide with Your Human Brain, with Brian Vaughn. On the new React profiler, windowing, and intelligent performance tuning.](https://reactpodcast.com/episodes/37)
265 | - 🎙️ [Brian Vaughn on Fast Refresh for Web and Concurrent React Dev Tools](https://play.acast.com/s/the-react-podcast/dc1f412e-e108-4497-9c62-a152c21a488a)
266 | - 🎙️ [Brian Vaughn on Async Rendering System and New Component Lifecycle Methods](https://podcast.codingzeal.com/114820/696362-brian-vaughn-react-core-team-member)
267 | - 🎙️ [Michael Jackson on Async React with Andrew Clark](https://reactpodcast.com/6)
268 |
269 | ## Patterns [🔝](#table-of-contents)
270 |
271 | ### Blogs and Articles
272 | - 📜 [Advanced Element Composition in React by Ryan Florence](https://ryanflorence.dev/p/advanced-element-composition-in-react)
273 | - 📜 [The State Initializer Pattern by Kent C. Dodds](https://kentcdodds.com/blog/the-state-initializer-pattern)
274 | - 📜 [Advanced React Component Patterns by Kent C. Dodds](https://kentcdodds.com/blog/updated-advanced-react-component-patterns)
275 | - 📜 [The state reducer pattern by Kent C. Dodds](https://kentcdodds.com/blog/the-state-reducer-pattern)
276 | - 📜 [Stop using isLoading booleans by Kent C. Dodds](https://kentcdodds.com/blog/stop-using-isloading-booleans)
277 | - 📜 [Why you shouldn't put refs in a dependency array by Kent C. Dodds](https://epicreact.dev/why-you-shouldnt-put-refs-in-a-dependency-array/)
278 | - 📜 [The Latest Ref Pattern in React by Kent C. Dodds](https://epicreact.dev/the-latest-ref-pattern-in-react/)
279 | - 📜 [One React mistake that's slowing you down by Kent C. Dodds](https://epicreact.dev/one-react-mistake-thats-slowing-you-down/)
280 | - 📜 [Memoization and React by Kent C. Dodds](https://epicreact.dev/memoization-and-react/)
281 |
282 | ### Talks
283 | - 🎥 [When To Fetch: Remixing React Router by Ryan Florence](https://www.youtube.com/watch?v=95B8mnhzoCM)
284 | - 🎥 [The Curse Of React By Ryan Florence](https://www.youtube.com/watch?v=orq9XnHGTgQ)
285 | - 🎥 [Making The DOM Declarative by Michael Jackson](https://www.youtube.com/watch?v=vyO5wKHlWZg)
286 | - 🎥 [Components, Patterns and sh*t it's Hard to Deal with by Marco Cedaro](https://portal.gitnation.org/contents/components-patterns-and-sht-its-hard-to-deal-with)
287 | - 🎥 [Refactoring React: Which component pattern can improve your codebase? by Siddharth Kshetrapal](https://www.youtube.com/watch?v=2Dw8gA60d_k&list=PLNBNS7NRGKMHLTeH4qfD3F320GXfj97kc&index=3)
288 | - 🎥 [UI as API by Narendra Shetty](https://www.youtube.com/watch?v=VN43HsCU3qM)
289 | - 🎥 [How Many Ways to Say I'm Sorry, Error Handling in React by Jesse Martin](https://www.youtube.com/watch?v=ExC0N1XHaRQ)
290 | - 🎥 [Scalable React Development for Large Projects by Jason Jean](https://www.youtube.com/watch?v=Lr-u2ALSEQg)
291 | - 🎥 [Designing with Code in Mind by Elizabet Oliveira](https://www.youtube.com/watch?v=fYQoeaJMLjw)
292 | - 🎥 [Setting Up Feature Flags with React by Talia Nassi](https://www.youtube.com/watch?v=533cKBMyKWg)
293 |
294 | ### Podcasts
295 | - 🎙️ [Building Accessible UI Components by Ryan Florence](https://fullstackradio.com/97)
296 |
297 | ## Testing [🔝](#table-of-contents)
298 |
299 | ### Blogs and Articles
300 | - 📜 [Introducing the react-testing-library by Kent C. Dodds](https://kentcdodds.com/blog/introducing-the-react-testing-library)
301 | - 📜 [Static vs Unit vs Integration vs E2E Testing for Frontend Apps by Kent C. Dodds](https://kentcdodds.com/blog/static-vs-unit-vs-integration-vs-e2e-tests)
302 | - 📜 [React Hooks: What's going to happen to my tests? by Kent C. Dodds](https://kentcdodds.com/blog/react-hooks-whats-going-to-happen-to-my-tests)
303 | - 📜 [Common mistakes with React Testing Library by Kent C. Dodds](https://kentcdodds.com/blog/common-mistakes-with-react-testing-library)
304 | - 📜 [How to test custom React hooks by Kent C. Dodds](https://kentcdodds.com/blog/how-to-test-custom-react-hooks)
305 | - 📜 [Testing Implementation Details by Kent C. Dodds](https://kentcdodds.com/blog/testing-implementation-details)
306 | - 📜 [Write fewer, longer tests by Kent C. Dodds](https://kentcdodds.com/blog/write-fewer-longer-tests)
307 | - 📜 [How to Test React.useEffect by Kent C. Dodds](https://epicreact.dev/how-to-test-react-use-effect/)
308 |
309 | ### Talks
310 | - 🎥 [Automating All the Code & Testing Things with GitHub Actions by Colby Fayock](https://portal.gitnation.org/contents/automating-all-the-code-and-testing-things-with-github-actions)
311 | - 🎥 [To Mock or Not to Mock - That's the Question by Rita Castro](https://portal.gitnation.org/contents/to-mock-or-not-to-mock-thats-the-question)
312 | - 🎥 [Don’t Let Your Unit Tests Slow You Down: Improve your front-end testing by Daniel Irvine](https://www.youtube.com/watch?v=1vDXRDQ9aJE&list=PLNBNS7NRGKMH7yfpYQD4TrFV25SMOCIPM&index=4)
313 | - 🎥 [Testing Is All About Principles by Alex Lobera](https://www.youtube.com/watch?v=xjP3Ll1UhEw)
314 | - 🎥 [BDD & TDD in React by Laura Beatris](https://www.youtube.com/watch?v=IbAiiHMD0Mg)
315 | - 🎥 [Write Tests. Generate UI. Profit! by Ed Bentley](https://www.youtube.com/watch?v=zy6qz5_CFc0)
316 |
317 |
318 |
319 | ## React in TypeScript [🔝](#table-of-contents)
320 | ### Blogs and Articles
321 | - 📜 [Wrapping React.useState with TypeScript by Kent C. Dodds](https://kentcdodds.com/blog/wrapping-react-use-state-with-type-script?ck_subscriber_id=363851721)
322 | - 📜 [How to write a React Component in TypeScript by Kent C. Dodds](https://kentcdodds.com/blog/how-to-write-a-react-component-in-typescript)
323 |
324 | ### Talks
325 | - 🎥 [TypeScript-ifying react-workshop-app by Kent C. Dodds](https://www.youtube.com/watch?v=3gGoV1TYmFk)
326 | - 🎥 [TypeScript-ifying EpicReact.dev workshops by Kent C. Dodds](https://www.youtube.com/watch?v=ouKooD-Afjo)
327 | - 🎥 [TypeScript-ifying the React Fundamentals workshop by Kent C. Dodds](https://www.youtube.com/watch?v=-p4RXvG9x-U)
328 | - 🎥 [TypeScript-ifying EpicReact.dev workshops by Kent C. Dodds](https://www.youtube.com/watch?v=N59_LYnf_SI)
329 | - 🎥 [TypeScriptifying the "Advanced React Hooks" workshop by Kent C. Dodds](https://www.youtube.com/watch?v=wsTKYr2acl8)
330 |
331 | 
332 |
333 |
334 | ## Contribution
335 | Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated!**.
336 |
337 | Please read the [contribution guidelines](CONTRIBUTING.md) first.
338 |
339 | 
340 |
341 |
342 | ## Maintainers
343 |
374 |
375 | 
376 |
377 |
378 | ## Star
379 | Don't forget to hit the ⭐, If you like this repository.
380 |
381 | 
382 |
383 |
384 | ## License
385 | Distributed under the MIT License. See `LICENSE` for more information.
386 |
387 | 
388 |
389 |
390 |
391 |
392 | [contributors-shield]: https://img.shields.io/github/contributors/Techwards/all-about-react.svg?style=for-the-badge
393 | [contributors-url]: https://github.com/Techwards/all-about-react/graphs/contributors
394 | [forks-shield]: https://img.shields.io/github/forks/Techwards/all-about-react.svg?style=for-the-badge
395 | [forks-url]: https://github.com/Techwards/all-about-react/network/members
396 | [stars-shield]: https://img.shields.io/github/stars/Techwards/all-about-react.svg?style=for-the-badge
397 | [stars-url]: https://github.com/Techwards/all-about-react/stargazers
398 | [issues-shield]: https://img.shields.io/github/issues/Techwards/all-about-react?style=for-the-badge
399 | [issues-url]: https://github.com/Techwards/all-about-react/issues
400 | [license-shield]: https://img.shields.io/github/license/Techwards/all-about-react?style=for-the-badge
401 | [license-url]: https://github.com/Techwards/all-about-react
402 | [good-first-issue-shield]: https://img.shields.io/github/labels/Techwards/all-about-react/good%20first%20issue?style=for-the-badge
403 | [good-first-issues]: https://github.com/Techwards/all-about-react/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
--------------------------------------------------------------------------------
/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techwards/all-about-react/9caeb052552e45bece9e66fdf5ffc44045ef8dcf/images/logo.png
--------------------------------------------------------------------------------
/website/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependencies
2 | /node_modules
3 |
4 | # Production
5 | /build
6 |
7 | # Generated files
8 | .docusaurus
9 | .cache-loader
10 |
11 | # Misc
12 | .DS_Store
13 | .env.local
14 | .env.development.local
15 | .env.test.local
16 | .env.production.local
17 |
18 | npm-debug.log*
19 | yarn-debug.log*
20 | yarn-error.log*
21 |
--------------------------------------------------------------------------------
/website/README.md:
--------------------------------------------------------------------------------
1 | # Website
2 |
3 | This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
4 |
5 | ### Installation
6 |
7 | ```
8 | $ yarn
9 | ```
10 |
11 | ### Local Development
12 |
13 | ```
14 | $ yarn start
15 | ```
16 |
17 | This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
18 |
19 | ### Build
20 |
21 | ```
22 | $ yarn build
23 | ```
24 |
25 | This command generates static content into the `build` directory and can be served using any static contents hosting service.
26 |
27 | ### Deployment
28 |
29 | Using SSH:
30 |
31 | ```
32 | $ USE_SSH=true yarn deploy
33 | ```
34 |
35 | Not using SSH:
36 |
37 | ```
38 | $ GIT_USER= yarn deploy
39 | ```
40 |
41 | If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
42 |
--------------------------------------------------------------------------------
/website/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3 | };
4 |
--------------------------------------------------------------------------------
/website/blog/2019-05-28-first-blog-post.md:
--------------------------------------------------------------------------------
1 | ---
2 | slug: first-blog-post
3 | title: First Blog Post
4 | authors:
5 | name: Gao Wei
6 | title: Docusaurus Core Team
7 | url: https://github.com/wgao19
8 | image_url: https://github.com/wgao19.png
9 | tags: [hola, docusaurus]
10 | ---
11 |
12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
13 |
--------------------------------------------------------------------------------
/website/blog/2019-05-29-long-blog-post.md:
--------------------------------------------------------------------------------
1 | ---
2 | slug: long-blog-post
3 | title: Long Blog Post
4 | authors: endi
5 | tags: [hello, docusaurus]
6 | ---
7 |
8 | This is the summary of a very long blog post,
9 |
10 | Use a `` comment to limit blog post size in the list view.
11 |
12 |
13 |
14 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
15 |
16 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
17 |
18 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
19 |
20 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
21 |
22 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
23 |
24 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
25 |
26 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
27 |
28 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
29 |
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
31 |
32 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
33 |
34 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
35 |
36 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
37 |
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
39 |
40 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
41 |
42 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
43 |
44 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
45 |
--------------------------------------------------------------------------------
/website/blog/2021-08-01-mdx-blog-post.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | slug: mdx-blog-post
3 | title: MDX Blog Post
4 | authors: [slorber]
5 | tags: [docusaurus]
6 | ---
7 |
8 | Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).
9 |
10 | :::tip
11 |
12 | Use the power of React to create interactive blog posts.
13 |
14 | ```js
15 |
16 | ```
17 |
18 |
19 |
20 | :::
21 |
--------------------------------------------------------------------------------
/website/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techwards/all-about-react/9caeb052552e45bece9e66fdf5ffc44045ef8dcf/website/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg
--------------------------------------------------------------------------------
/website/blog/2021-08-26-welcome/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | slug: welcome
3 | title: Welcome
4 | authors: [slorber, yangshun]
5 | tags: [facebook, hello, docusaurus]
6 | ---
7 |
8 | [Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).
9 |
10 | Simply add Markdown files (or folders) to the `blog` directory.
11 |
12 | Regular blog authors can be added to `authors.yml`.
13 |
14 | The blog post date can be extracted from filenames, such as:
15 |
16 | - `2019-05-30-welcome.md`
17 | - `2019-05-30-welcome/index.md`
18 |
19 | A blog post folder can be convenient to co-locate blog post images:
20 |
21 | 
22 |
23 | The blog supports tags as well!
24 |
25 | **And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
26 |
--------------------------------------------------------------------------------
/website/blog/authors.yml:
--------------------------------------------------------------------------------
1 | endi:
2 | name: Endilie Yacop Sucipto
3 | title: Maintainer of Docusaurus
4 | url: https://github.com/endiliey
5 | image_url: https://github.com/endiliey.png
6 |
7 | yangshun:
8 | name: Yangshun Tay
9 | title: Front End Engineer @ Facebook
10 | url: https://github.com/yangshun
11 | image_url: https://github.com/yangshun.png
12 |
13 | slorber:
14 | name: Sébastien Lorber
15 | title: Docusaurus maintainer
16 | url: https://sebastienlorber.com
17 | image_url: https://github.com/slorber.png
18 |
--------------------------------------------------------------------------------
/website/docs/intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Tutorial Intro
6 |
7 | Let's discover **Docusaurus in less than 5 minutes**.
8 |
9 | ## Getting Started
10 |
11 | Get started by **creating a new site**.
12 |
13 | Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
14 |
15 | ### What you'll need
16 |
17 | - [Node.js](https://nodejs.org/en/download/) version 16.14 or above:
18 | - When installing Node.js, you are recommended to check all checkboxes related to dependencies.
19 |
20 | ## Generate a new site
21 |
22 | Generate a new Docusaurus site using the **classic template**.
23 |
24 | The classic template will automatically be added to your project after you run the command:
25 |
26 | ```bash
27 | npm init docusaurus@latest my-website classic
28 | ```
29 |
30 | You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
31 |
32 | The command also installs all necessary dependencies you need to run Docusaurus.
33 |
34 | ## Start your site
35 |
36 | Run the development server:
37 |
38 | ```bash
39 | cd my-website
40 | npm run start
41 | ```
42 |
43 | The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
44 |
45 | The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
46 |
47 | Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
48 |
--------------------------------------------------------------------------------
/website/docs/tutorial-basics/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Tutorial - Basics",
3 | "position": 2,
4 | "link": {
5 | "type": "generated-index",
6 | "description": "5 minutes to learn the most important Docusaurus concepts."
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/website/docs/tutorial-basics/congratulations.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 6
3 | ---
4 |
5 | # Congratulations!
6 |
7 | You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
8 |
9 | Docusaurus has **much more to offer**!
10 |
11 | Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
12 |
13 | Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
14 |
15 | ## What's next?
16 |
17 | - Read the [official documentation](https://docusaurus.io/)
18 | - Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config)
19 | - Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration)
20 | - Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
21 | - Add a [search bar](https://docusaurus.io/docs/search)
22 | - Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
23 | - Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
24 |
--------------------------------------------------------------------------------
/website/docs/tutorial-basics/create-a-blog-post.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 3
3 | ---
4 |
5 | # Create a Blog Post
6 |
7 | Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
8 |
9 | ## Create your first Post
10 |
11 | Create a file at `blog/2021-02-28-greetings.md`:
12 |
13 | ```md title="blog/2021-02-28-greetings.md"
14 | ---
15 | slug: greetings
16 | title: Greetings!
17 | authors:
18 | - name: Joel Marcey
19 | title: Co-creator of Docusaurus 1
20 | url: https://github.com/JoelMarcey
21 | image_url: https://github.com/JoelMarcey.png
22 | - name: Sébastien Lorber
23 | title: Docusaurus maintainer
24 | url: https://sebastienlorber.com
25 | image_url: https://github.com/slorber.png
26 | tags: [greetings]
27 | ---
28 |
29 | Congratulations, you have made your first post!
30 |
31 | Feel free to play around and edit this post as much you like.
32 | ```
33 |
34 | A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
35 |
--------------------------------------------------------------------------------
/website/docs/tutorial-basics/create-a-document.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 2
3 | ---
4 |
5 | # Create a Document
6 |
7 | Documents are **groups of pages** connected through:
8 |
9 | - a **sidebar**
10 | - **previous/next navigation**
11 | - **versioning**
12 |
13 | ## Create your first Doc
14 |
15 | Create a Markdown file at `docs/hello.md`:
16 |
17 | ```md title="docs/hello.md"
18 | # Hello
19 |
20 | This is my **first Docusaurus document**!
21 | ```
22 |
23 | A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
24 |
25 | ## Configure the Sidebar
26 |
27 | Docusaurus automatically **creates a sidebar** from the `docs` folder.
28 |
29 | Add metadata to customize the sidebar label and position:
30 |
31 | ```md title="docs/hello.md" {1-4}
32 | ---
33 | sidebar_label: 'Hi!'
34 | sidebar_position: 3
35 | ---
36 |
37 | # Hello
38 |
39 | This is my **first Docusaurus document**!
40 | ```
41 |
42 | It is also possible to create your sidebar explicitly in `sidebars.js`:
43 |
44 | ```js title="sidebars.js"
45 | module.exports = {
46 | tutorialSidebar: [
47 | 'intro',
48 | // highlight-next-line
49 | 'hello',
50 | {
51 | type: 'category',
52 | label: 'Tutorial',
53 | items: ['tutorial-basics/create-a-document'],
54 | },
55 | ],
56 | };
57 | ```
58 |
--------------------------------------------------------------------------------
/website/docs/tutorial-basics/create-a-page.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Create a Page
6 |
7 | Add **Markdown or React** files to `src/pages` to create a **standalone page**:
8 |
9 | - `src/pages/index.js` → `localhost:3000/`
10 | - `src/pages/foo.md` → `localhost:3000/foo`
11 | - `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
12 |
13 | ## Create your first React Page
14 |
15 | Create a file at `src/pages/my-react-page.js`:
16 |
17 | ```jsx title="src/pages/my-react-page.js"
18 | import React from 'react';
19 | import Layout from '@theme/Layout';
20 |
21 | export default function MyReactPage() {
22 | return (
23 |
24 |
My React page
25 |
This is a React page
26 |
27 | );
28 | }
29 | ```
30 |
31 | A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page).
32 |
33 | ## Create your first Markdown Page
34 |
35 | Create a file at `src/pages/my-markdown-page.md`:
36 |
37 | ```mdx title="src/pages/my-markdown-page.md"
38 | # My Markdown page
39 |
40 | This is a Markdown page
41 | ```
42 |
43 | A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page).
44 |
--------------------------------------------------------------------------------
/website/docs/tutorial-basics/deploy-your-site.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 5
3 | ---
4 |
5 | # Deploy your site
6 |
7 | Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**).
8 |
9 | It builds your site as simple **static HTML, JavaScript and CSS files**.
10 |
11 | ## Build your site
12 |
13 | Build your site **for production**:
14 |
15 | ```bash
16 | npm run build
17 | ```
18 |
19 | The static files are generated in the `build` folder.
20 |
21 | ## Deploy your site
22 |
23 | Test your production build locally:
24 |
25 | ```bash
26 | npm run serve
27 | ```
28 |
29 | The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/).
30 |
31 | You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**).
32 |
--------------------------------------------------------------------------------
/website/docs/tutorial-basics/markdown-features.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 4
3 | ---
4 |
5 | # Markdown Features
6 |
7 | Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
8 |
9 | ## Front Matter
10 |
11 | Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
12 |
13 | ```text title="my-doc.md"
14 | // highlight-start
15 | ---
16 | id: my-doc-id
17 | title: My document title
18 | description: My document description
19 | slug: /my-custom-url
20 | ---
21 | // highlight-end
22 |
23 | ## Markdown heading
24 |
25 | Markdown text with [links](./hello.md)
26 | ```
27 |
28 | ## Links
29 |
30 | Regular Markdown links are supported, using url paths or relative file paths.
31 |
32 | ```md
33 | Let's see how to [Create a page](/create-a-page).
34 | ```
35 |
36 | ```md
37 | Let's see how to [Create a page](./create-a-page.md).
38 | ```
39 |
40 | **Result:** Let's see how to [Create a page](./create-a-page.md).
41 |
42 | ## Images
43 |
44 | Regular Markdown images are supported.
45 |
46 | You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
47 |
48 | ```md
49 | 
50 | ```
51 |
52 | 
53 |
54 | You can reference images relative to the current file as well, as shown in [the extra guides](../tutorial-extras/manage-docs-versions.md).
55 |
56 | ## Code Blocks
57 |
58 | Markdown code blocks are supported with Syntax highlighting.
59 |
60 | ```jsx title="src/components/HelloDocusaurus.js"
61 | function HelloDocusaurus() {
62 | return (
63 |