Почему есть такая разница между function foo() и const data, что в случае с функцией, компонент ререндерится, а в случае с переменной, нет.потому что переменная ссылается на одно и тоже число ( примитив ) а от того что там новая или старая переменная это никого не волнует
jQuery.fn.extend( {
val: function( value ) {
return this
}
} );
if ( !arguments.length ) {
if ( elem ) {
hooks = jQuery.valHooks[ elem.type ] ||
jQuery.valHooks[ elem.nodeName.toLowerCase() ];
if ( hooks &&
"get" in hooks &&
( ret = hooks.get( elem, "value" ) ) !== undefined
) {
return ret;
}
ret = elem.value;
// Handle most common string cases
if ( typeof ret === "string" ) {
return ret.replace( rreturn, "" );
}
// Handle cases where value is null/undef or number
return ret == null ? "" : ret;
}
return;
}
в setTimeout коллбэк который ты туда ложишь - он макро задача, в then коллбэк - микро задача
Сам timeout - макро задача.- сам вызов setTimeout - синхронный, а вот его коллбэк - он потом становится макротаской
представь что в HomePage находиться куча стейтов, их целая тьма, штук 15, компонент не маленький, и он очень часто ререндериться по каким-то причинам, но компонент Test не ререндерится - вопрос почему ?
Ведь каждый раз создаётся примитив - true, ведь true - это булевое значение - является примитивом, оно действительно создаётся каждый раз при каждом ререндере HomePage
вот тебе и написал Александр про поверхностное сравнение