Top Banner
CS50 Beyond
31

CS50 Beyond · class Hello extends React.Component { render() { return Hello {this.props.name}!; } }

Aug 16, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

CS50 Beyond

Page 2: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }
Page 3: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

React

• Declarative • JSX • Components • State

Page 4: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

JSX

Page 5: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

JSX

const foo = <h1>Hello!</h1>

Page 6: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

React

ReactDOM

Babel

Page 7: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>

<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>

<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

Page 8: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

Components

Page 9: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Hello extends React.Component {

}

Page 10: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Hello extends React.Component {

render() { return <h1>Hello!</h1>; }

}

Page 11: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

<Hello />

Page 12: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

<Hello name="Alice" />

Page 13: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Hello extends React.Component {

render() { return <h1>Hello!</h1>; }

}

Page 14: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Hello extends React.Component {

render() { return <h1>Hello {this.props.name}!</h1>; }

}

Page 15: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

State

Page 16: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Counter extends React.Component {

}

Page 17: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Counter extends React.Component {

constructor(props) { }

}

Page 18: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Counter extends React.Component {

constructor(props) { super(props); }

}

Page 19: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Counter extends React.Component {

constructor(props) { super(props); this.state = { }; }

}

Page 20: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

class Counter extends React.Component {

constructor(props) { super(props); this.state = { count: 0 }; }

}

Page 21: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

Changing State

Page 22: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

this.setState({ count: 28 });

Page 23: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

this.setState(state => ({ count: state.count + 1 }));

Page 24: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

this.setState(state => { const newCount = 28; return { count: newCount }; });

Page 25: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

Guidelines for State

• Never modify state directly, always use setState.

• If state depends on previous state, then setState should take a function as its argument.

Page 26: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

Some Useful JS Tools

Page 27: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

const list1 = [1, 2, 3, 4, 5]; const copy = [...list1];

Page 28: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

const list1 = [1, 2, 3, 4, 5]; const list2 = [...list1, 6];

Page 29: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

const list1 = [1, 2, 3, 4, 5]; list1.splice(3, 1);

// list1 is now [1, 2, 3, 5]

Page 30: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

Morning Project

• To-Do List • Allow user to:

• Type in a task. • Add a new task to a list of tasks. • Delete a task by clicking a button next to each

task.

Page 31: CS50 Beyond · class Hello extends React.Component { render() { return <h1>Hello {this.props.name}!</h1>; } }

CS50 Beyond