heap_size_limit
, например, из командной строки:node -e 'const { getHeapStatistics } = require("node:v8"); console.log(getHeapStatistics().heap_size_limit);'
export NODE_OPTIONS=--max_old_space_size=4096
maxValues = { fullPrice: 123, rating: 5 };
minValues = { fullPrice: 103, rating: 3 };
const src = [{ id: 1, fullPrice: 123, rating: 5 }, { id: 2, fullPrice: 103, rating: 3 }];
const checkProps = ['fullPrice', 'rating'];
const xValues = (method, initialValue) =>
src.reduce((acc, c) => {
Object.entries(c).forEach(([key, value]) => {
if (checkProps.includes(key)) {
acc[key] = Math[method](acc[key], value);
}
});
return acc;
}, Object.fromEntries(checkProps.map(propName => [propName, initialValue])));
const minValues = xValues('min', Number.POSITIVE_INFINITY);
const maxValues = xValues('max', Number.NEGATIVE_INFINITY);
const result = src.map(item =>
Object.fromEntries(
Object.entries(item).map(([key, value]) => {
if (checkProps.includes(key)) {
return [key, { value, min: minValues[key] === value, max: maxValues[key] === value }];
}
return [key, value];
})
)
);
[
{
"id": 1,
"fullPrice": {
"value": 123,
"min": false,
"max": true
},
"rating": {
"value": 5,
"min": false,
"max": true
}
},
{
"id": 2,
"fullPrice": {
"value": 103,
"min": true,
"max": false
},
"rating": {
"value": 3,
"min": true,
"max": false
}
}
]
arr[1] = 2;
– нельзя.function up() {
const newPosition = catPosition.slice(); // сделали новый массив, копию
newPosition[1]++;
setCatPosition(newPosition);
}
key
. key
. Нужно что-то уникальное, характерное для каждого элемента массива, что не изменится при изменении порядка, скажем.arr.map(el => <TimerComponent name={el} key={el} />)
Ну и массивы в стейте, помните, надо не мутировать, а заменять массив целиком на новый.const arr = [0, 1, 2, 3, 4, 5];
const index = 3;
[ ...arr.slice(0, index), 'Habr', ...arr.slice(index + 1) ]
// [ 0, 1, 2, "Habr", 4, 5 ]
Делается новый массив, в котором сначала идут элементы исходного от 0
до index
(не включая index);index
на некий новый. В отличие от метода splice()
, которым можно было бы сделать тоже самое arr.splice(index, 1, 'Habr')
, вариант в вопросе не изменяет исходный массив, а создаёт новый – что, в общем-то, «правильно». const Main = styled.main`
background-color: black;
height: 100vh;
`
function App(props) {
const { message } = props;
return (
<Main>
<div className="App">
{message}
</div>
</Main>
);
}
getState()
и рано или поздно меняет состояние через dispatch()
.async
функции возвратить Promise.reject()
— то же, что бросить Exception в обычном синхронном коде. Подробнее. React.createElement()
{title.length > 0 ? <h2 className={styles.cardContentTopLineTitle}></h2> : <></>}
{title.length > 0 ? (
<h2
className={styles.cardContentTopLineTitle}
data-name-a={data.names.a}
data-name-b={data.names.b}
title="some title"
>
Text text
</h2>
) : (
<></>
)}
когда в нем часто перерисовывается DOM деревоне совсем: когда действительно прям весь DOM должен меняться часто-постоянно, фишки теневого DOM мало улучшат ситуацию.
Нельзя просто взять, и ...