MASTERCLASS
var x = 4
var y = x * 2
// What is y?
var x = 4
var y = x * 2
x = 6
// What is y?
A | B | |
---|---|---|
1 | 4 | =A1 * 2 |
2 |
A | B | |
---|---|---|
1 | 6 | =A1 * 2 |
2 |
Application state
UI
Custom logic
<ul id="todos">
</ul>
<script type="text/javascript">
var todoItems = new Collection()
todoItems.forEach(item => {
$('<li/>').text(item.description).appendTo('#todos')
})
todoItems.on('add', item => {
$('<li/>').text(item.description).appendTo('#todos')
})
todoItems.on('remove', index => {
$('#todos').child(index).remove()
})
todoItems.on('change', (index, item) => {
$('#todos').child(index).text(item.description)
})
</script>
<ul id="todos">
</ul>
<script type="text/javascript">
var todoItems = new Collection()
function render() {
$('#todos').html('')
todoItems.forEach(item => {
$('<li/>').text(item.description).appendTo('#todos')
})
}
render()
todoItems.on('add remove change', render)
</script>
State
Rendering
Shadow DOM
DOM
Reconciliation
FAST
SLOW
import React from 'react'
export default class App extends React.Component {
state = {
name: 'world'
}
render() {
const {name} = this.state
return <div>Hello {name}</div>
}
}
import React from 'react'
export default class App extends React.Component {
state = {
name: 'world'
}
render() {
const {name} = this.state
return React.createElement('div', {children: `Hello ${name}`})
}
}
import React from 'react'
export default class App extends React.Component {
state = {
name: 'world'
}
render() {
return (
<div id="my-app">
<h1>Welcome to my app</h1>
<main>
{this.renderNavigation()}
{this.renderContent()}
</main>
</div>
)
}
renderNavigation() {
return (
<nav>
<a href="/one">Item 1</a>
</nav>
)
}
this.renderContent() {
return (
<div className="content">
<p>Hello everyone!</p>
</div>
)
}
}