Loading...
}Hello World
; returnname = {this.state.characterData.name}, height ={" "} {this.state.characterData.height}
); } } Public API for fetching Star Wars data Fetching data and changing state 58{this.state.stuff}
{text}
{text}
Given name = {this.state.name}
Given name = {this.state.name}
Given age = {this.state.age}
{this.state.name}
} } 83 1) render 2) componentDidMount 3) done (triggers render again){this.state.name}
} } 85 This is called now several times! Only one time{this.state.name}
} } 86 1) when component updates, fetching happens 2) fetching done, state changes, component updates again! 1) happens again!{this.state.name}
} } 87 Trigger fetch only if props changed{text}
setText("hello")}>Click me{text}
setText("hello")}>Click me{number1 + number2}
setNumber1(Number(e.target.value))} placeholder="number 1" /> setNumber2(Number(e.target.value))} placeholder="number 2" />{counter}
setCounter(counter + 1)}>+{counter}
+ > ); } 95 Button increases the count still by one!{counter}
+ > ); } 96 Passing function to a function…{counter}
+ > ); } 97 Because of closure, we have 0 + 1 and 0 + 1!{counter}
+ > ); } 98 Doing async stuff, clicking button several times. Triggers 0 + 1 several times, end result is 1{counter}
{ setCounter((prevCount) => prevCount + 1); setCounter((prevCount) => prevCount + 1); }} > +{time}
} 103 useEffect is similar to didMount AND didUpdate, happens after render If this function returns a function it is called when Clock is cleared from dom this will change state, useEffect called again...{time}
} 104 "dependencies", call effect function if depency value change. By giving empty array, it will be called only once{resource}
setResource("posts")}>posts setResource("todos")}>todos{resource}
setResource("posts")}>posts setResource("todos")}>todos{time}
} 107 The useEffect function returns a function...{resource}
setResource("posts")}>posts setResource("todos")}>todos{resource}
setResource("posts")}>posts setResource("todos")}>todos{this.state.name}
} } 115 Notice the checking here that trigger the fetch only if props.id changed{character.name}
} 117 Changing the state will trigger useEffect again! Eternal loop!{character.name}
} 118 Every time a props.id is changed trigger the effectHello!
} } class AccessDenied extends React.Component { render() { returnAccessDenied
} } class Login extends React.Component { render() { if(this.props.name === "Jack") return else return } } ReactDOM.render( , document.getElementById('root') ); Determining which component is returned 120Display Random Name
} } class Parent extends React.Component { render() { return } } 128 Generates random name This component wants to display the random nameDisplay Random Name
} } class Parent extends React.Component { render() { return } } 129 When button clicked random name is in console. How to pass this to DisplayRandomName component?Display Random Name
} } class Parent extends React.Component { clicked = (name) => { console.log(name) } render() { return } } 130 .. And the function is passed here We have a function in the props now…Display Random Name: {this.props.name}
} } class Parent extends React.Component { state = {name: undefined} clicked = (name) => { this.setState({name}) // {name: 'tina'} } render() { return