Skip to content

Instantly share code, notes, and snippets.

View michaelkutuzov's full-sized avatar

Michael Kutuzov michaelkutuzov

View GitHub Profile
@michaelkutuzov
michaelkutuzov / statenode.js
Created September 14, 2020 11:11
Fiber inside 10
fiberRoot.current.stateNode === fiberRoot; // true
@michaelkutuzov
michaelkutuzov / current.jsx
Created September 14, 2020 11:10
Fiber inside 9
const hostRootFiberNode = fiberRoot.current
@michaelkutuzov
michaelkutuzov / reference.js
Created September 14, 2020 11:10
Fiber inside 8
const fiberRoot = query('#container')._reactRootContainer._internalRoot
@michaelkutuzov
michaelkutuzov / container.jsx
Created September 14, 2020 11:09
Fiber inside 7
const domContainer = document.querySelector('#container');
ReactDOM.render(React.createElement(ClickCounter), domContainer);
@michaelkutuzov
michaelkutuzov / signature.js
Created September 14, 2020 11:08
Fiber inside 6
function updateHostComponent(current, workInProgress, renderExpirationTime) {...}
@michaelkutuzov
michaelkutuzov / ClickCounter.js
Created September 14, 2020 11:07
Fiber inside 5
{
$$typeof: Symbol(react.element),
key: null,
props: {},
ref: null,
type: ClickCounter
}
@michaelkutuzov
michaelkutuzov / data-structures.js
Created September 14, 2020 11:06
Fiber inside 4
[
{
$$typeof: Symbol(react.element),
type: 'button',
key: "1",
props: {
children: 'Update counter',
onClick: () => { ... }
}
},
@michaelkutuzov
michaelkutuzov / rewritten.jsx
Created September 14, 2020 11:05
Fiber inside 3
class ClickCounter {
...
render() {
return [
React.createElement(
'button',
{
key: '1',
onClick: this.onClick
},
@michaelkutuzov
michaelkutuzov / click-counter.jsx
Created September 14, 2020 11:04
Fiber inside 2
<button key="1" onClick={this.onClick}>Update counter</button>
<span key="2">{this.state.count}</span>
@michaelkutuzov
michaelkutuzov / implementation.jsx
Created September 14, 2020 11:01
Fiber inside 1
class ClickCounter extends React.Component {
constructor(props) {
super(props);
this.state = {count: 0};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState((state) => {
return {count: state.count + 1};