Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

reactDeveloper-2020

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

React Concepts

  • Don't touch the DOM [USING virtual DOM]
  • Build websites like a lego blocks.
  • Undirectional data flow [Data only flows in one way so esy to debug]
  • UI, The rest uis up to you

Job of a react developer

  • Decide on components
  1. State v/s Props
  • Decide the state and where it lives
    1. when the state changes then the state using components only changing.
  • What changes when state changes.

NPM vs Yarn

  • Install dependencies from package.json: npm install == yarn

  • Install a package and add to package.json: npm install package --save == yarn add package

  • Install a devDependency to package.json: npm install package --save-dev == yarn add package --dev

  • Remove a dependency from package.json: npm uninstall package --save == yarn remove package

React App installaton

  • nvm install 12.19.0
  • npx create-reat-app monsterss-rolodex

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.```
# Container component
import React, { Component } from 'react';
import Api from 'path/to/api';
class CommentsListContainer extends Component {
constructor() {
super();
// Set initial state
this.state = { comments: [] }
}
componentDidMount() {
// Make API call and update state with returned comments
Api.getComments().then(comments => this.setState({ comments }));
}
render() {
// Pass our state comments to the presentational component
return (
<CommentsList comments={this.state.comments} />;
);
}
}
// Presentational Component
const CommentsList = ({ comments }) => (
<div>
{comments.map(comment => (
<div>{comment}</div>
)}
</div>
);
GoalKicker.com – React JS Notes for Professionals 41
CommentsList.propTypes = {
comments: React.PropTypes.arrayOf(React.PropTypes.string)
}
# Part 1: Create a React App
This section introduces React basics. You will learn how to bootstrap a new React app with the Create React App CLI. In subsequent parts of the tutorial, you will gradually add new cloud functionality to your application.
> If you want to integrate Amplify Framework into an existing React application, you can skip Part 1 and start directly to Part 2.
### Install the Create React App CLI and Create a New Project
The easiest way to create an React application is with the Create React App Command Line Interface (CLI). To install the CLI, run the following command in your terminal:
```sh
$ npm install -g create-react-app

After the installation, go to a location where you wish to start your new application project and execute the following command to create a new React app:

$ create-react-app amplify-notes

Install Amplify Framework Libraries

Now, you have a new React project called react-notes! You can switch to your project’s root folder and install required Amplify Framework libraries.

$ cd react-notes

"start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject"

Create react App

https://create-react-app.dev/docs/getting-started/

Bable will help to run the javascript file in all the versions.

  • Build is the folder where the program runs.

  • src is our source file

  • index.js >> React library >>allows to write the html syntax inside App.js

  • reactDOm is a little robot from the previous section.

Example of jsx

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>
</div>

JXS is trying to mimc what HTML does!

 <header className='App-header'>
<img src={logo} className='App-logo' alt='logo' />
<p>
{this.state.string}
</p>
<button onClick={() => this.setState({string: 'Hello Sarath'})}> Change Text</button>
<button onClick={() => this.setState({string : 'Hello Friend'})}>Second button</button>
</header>

Array methods

  1. includes()
  2. map()
  3. filter()
  4. reduce()
  5. find()

The key will helps react to know which elements is to be updated. So it is important to provide a key in the object.

Optional map key attribute

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
class App extends Component {
constructor() {
super();
this.state = {
monsters: [
{
name: "Frakerstein",
id: "asc1",
},
{
name: "Dracula",
id: "asc2",
},
{
name: "Zombie",
id: "asc3",
},
],
};
}
render() {
return (
<div className='App'>
{this.state.monsters.map((monster) => (
<h1 key ={monster.id}> {monster.name}</h1>
))}
</div>
);
}
}
export default App;
  • rendrer is comes along with react component *super() helps us with this by calling REact.Component's constructor()

ComponentDidMount - to fetch the url

React

  • React library helps to manipulate the DOM efficiently.
  • Asyncronous will happen sometime in the future.Async will wait for complete the task.
  • Props as a parameter in constructor helps to use parameter in state. you canuse this.props inside of a constructor.

State VS Props

  • If the state changed with the setstate where the monsters pass down to components will recive new props that means the component has to render() If that component has a new prop information will pass to other components.

Each components are the function that is render.

ALL the components in the setstaate carried out a renedr function.

<input
type='search'
placeholder='Search monsters'
onChange={(e) => {
this.setState({ searchField: e.target.value }, () =>
console.log(this.state)
);
}}
/>

.bind is a method to return a new function

setState()

  • The primary way that you make UI updates to your React applications is through a call to the setState() function. This function will perform a shallow merge between the new state that you provide and the previous state, and will trigger a re-render of your component and all decedents.

Parameters

  1. updater: It can be an object with a number of key-value pairs that should be merged into the state or a function that returns such an object.

  2. callback (optional): a function which will be executed after setState() has been executed successfully. Due to the fact that calls to setState() are not guaranteed by React to be atomic, this can sometimes be useful if you want to perform some action after you are positive that setState() has been executed successfully.

Usage:

The setState method accepts an updater argument that can either be an object with a number of key-value-pairs that should be merged into the state, or a function that returns such an object computed from prevState and props.

Props in React

  • props are used to pass data and methods from a parent component to a child component. Interesting things about props
  1. They are immutable.
  2. They allow us to create reusable components.
 doSomething(){
console.log("Parent component");
}
render() {
return <div>
<Child
text="This is the child number 1"
title="Title 1"
onClick={this.doSomething} />
<Child
text="This is the child number 2"
title="Title 2"
onClick={this.doSomething} />
</div>
}
}
class Child extends React.Component{
render() {
return <div>
<h1>{this.props.title}</h1>
<h2>{this.props.text}</h2>
</div>
}
}

React Component Container

into Presentational and Container components.
Presentational components are concerned only with displaying data - they can be regarded as, and are often
implemented as, functions that convert a model to a view. Typically they do not maintain any internal state.
Container components are concerned with managing data. This may be done internally through their own state, or
by acting as intermediaries with a state-management library such as Redux. The container component will not
directly display data, rather it will pass the data to a presentational component.

Container component

import React, { Component } from 'react'; import Api from 'path/to/api'; class CommentsListContainer extends Component { constructor() { super(); // Set initial state this.state = { comments: [] } } componentDidMount() {

Make API call and update state with returned comments

Api.getComments().then(comments => this.setState({ comments })); } render() { // Pass our state comments to the presentational component return ( ; ); } } // Presentational Component const CommentsList = ({ comments }) => (

{comments.map(comment => (
{comment}
)}
); # GoalKicker.com – React JS Notes for Professionals 41 CommentsList.propTypes = { comments: React.PropTypes.arrayOf(React.PropTypes.string) }

Basic Component

  • Given the following HTML file:
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/babel" src="scripts/example.js"></script>
</body>
</html>

Adding Local State to a Class We will move the date from props to state in three steps:

Replace this.props.date with this.state.date in the render() method:

class Clock extends React.Component {
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Add a class constructor that assigns the initial this.state:
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
  1. Remove the date prop from the element:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);

About

Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages