JSFiddle - React, Tailwind, and code Playground

JavaScript

// для того, чтобы изменения объекта 
// через одную переменную не были видны
// в других переменных, необходимо
// клонировать объекты, а не передавать
// по ссылке

// самая примитивная функция
function clone(obj){
	if (typeof obj !== 'object') return null;
  
  var temp = {}; // временный объект
  
  for (var key in obj) {
    temp[key] = obj[key];
  }
  
  return temp;
}

var foo = { a: 1 };
var bar = clone(foo);
(bar.a)++;

document.body.innerHTML  =  foo.a +"<br>";
document.body.innerHTML +=  bar.a +"<br>";