реакт знает обо всех детях конкретного элемента и поэтому добавление/удаления верхнего элемента, сдвигает нижние, а не пересоздаёт их
https://overreacted.io/react-as-a-ui-runtime/#conditions
https://overreacted.io/react-as-a-ui-runtime/#conditions
overreacted.io
React as a UI Runtime — overreacted
An in-depth description of the React programming model.
This is why we say reconciliation is recursive. When React walks the element tree, it might meet an element whose type is a component. It will call it and keep descending down the tree of returned React elements. Eventually, we’ll run out of components, and React will know what to change in the host tree.
(реакт спускается по дереву элементов, и когда видит компонент, то продолжает спускаться уже по его дереву элементов)
(реакт спускается по дереву элементов, и когда видит компонент, то продолжает спускаться уже по его дереву элементов)
Why Do We Write super(props)
super(props) ссылается к родительскому конструктору. привязывает родительские методы к дочернему элементу
если мы не прокидываем props, то они всё равно привяжутся из родительского конструктора, но только после того, как весь конструктор запустится
Without an explicit constructor, all arguments are passed down automatically.
super(props) ссылается к родительскому конструктору. привязывает родительские методы к дочернему элементу
если мы не прокидываем props, то они всё равно привяжутся из родительского конструктора, но только после того, как весь конструктор запустится
constructor(props) {
super(); // 😬 We forgot to pass props
console.log(props); // ✅ {}
console.log(this.props); // 😬 undefined
}Without an explicit constructor, all arguments are passed down automatically.
crossorigin html attribute allow using external image in canvas
(The crossorigin attribute is a CORS settings attribute. Its purpose is to allow images from third-party sites that allow cross-origin access to be used with canvas)
(The crossorigin attribute is a CORS settings attribute. Its purpose is to allow images from third-party sites that allow cross-origin access to be used with canvas)
главная идея прототипного наследования заключается в том что объект может указывать на другой объект и наследовать все его свойства
главная цель в том чтобы позволить множеству экземпляров объекта использовать общие свойства
promise это объект который содержит своё состояние. у промиса бывает три типа состояния:
pending, fulfilled, rejected
pending, fulfilled, rejected
Способ использования, в общих чертах, такой:
1 Код, которому надо сделать что-то асинхронно, создаёт объект
2 Внешний код, получив
3 По завершении процесса асинхронный код переводит
1 Код, которому надо сделать что-то асинхронно, создаёт объект
promise и возвращает его.2 Внешний код, получив
promise, навешивает на него обработчики.3 По завершении процесса асинхронный код переводит
promise в состояние fulfilled (с результатом) или rejected (с ошибкой). При этом автоматически вызываются соответствующие обработчики во внешнем коде.в js переменные не имеют типа, тип имеют только значения, хранящиеся в переменных
var a;
typeof a; // "undefined"
a = "hello world";
typeof a; // "string"
a = 42;
typeof a; // "number"
на самом деле всё немного сложнее
== сравнивает, приводя типы друг к другу
=== не приводит типы друг к другу
чтобы получить pure component в функциональном компоненте нужно его весь завернуть в React.memo
code_notes
Why Do We Write super(props) super(props) ссылается к родительскому конструктору. привязывает родительские методы к дочернему элементу если мы не прокидываем props, то они всё равно привяжутся из родительского конструктора, но только после того, как весь…
до объявления super мы не можем использовать this
Function Declaration
Function Expression
function sum(a, b) {
let result = a + b;
return result;
}Function Expression
let sum = function(a, b) {
let result = a + b;
return result;
};