Мне нужно: 1 после первого монтирования компонента, я присвоил ему состояние с объектом
const [state1, setState1] = useState(option);
, и эта опция импортирована из другого файла:
export const option = {prop1:"prop1"}
и затем в useEffect:
useEffect(() => {
console.log("useEffect");
option = {
prop1:"prop1"
};
setOption(option);
});
, поэтому эффект не будет вызван, поскольку объект опции имеет тот же адрес памяти. и я попробовал это:
useEffect(() => {
console.log("useEffect");
let newOption = Object.assign({},option);
newOption.prop1 = "newProp";
setOption(newOption);
},[newOption]);
Я также добавляю условие, чтобы избежать бесконечного l oop. но поскольку newOption создается каждый раз, он по-прежнему приводит к бесконечному l oop.
, поэтому одним из решений является изменение условия на JSON.stringify(option)
, но есть ли лучший способ сделать это?