Как можно изменить код, чтобы значения ref1 изменялись только при нажатии кнопки срабатывания функции save, а не реактивно при изменении ref2?
Для скопирования значения одной переменной на другую переменную с использованием ссылок ref в C# можно просто указать обе переменные с модификатором ref при вызове функции.
Пример:
```csharp
using System;
class Program
{
static void Main()
{
int ref1 = 10;
int ref2 = 20;
CopyValue(ref ref1, ref ref2);
Console.WriteLine($"ref1: {ref1}");
Console.WriteLine($"ref2: {ref2}");
}
static void CopyValue(ref int source, ref int destination)
{
destination = source;
}
}
```
Чтобы изменить значение переменной `ref1` только при нажатии кнопки, можно использовать флаг или условие для контроля когда вызывать функцию копирования. Например, можно добавить проверку на флаг `isSaving` перед вызовом функции `CopyValue`:
```csharp
using System;
class Program
{
static bool isSaving = false;
static void Main()
{
int ref1 = 10;
int ref2 = 20;
ref2 = 30; // эмуляция изменения значения ref2
if (isSaving)
{
CopyValue(ref ref1, ref ref2);
Console.WriteLine($"ref1: {ref1}");
}
Console.WriteLine($"ref2: {ref2}");
}
static void CopyValue(ref int source, ref int destination)
{
destination = source;
}
}
```
Теперь значение `ref1` будет изменяться только при наличии установленного флага `isSaving`.
Не совсем так. Если бы main_title и main_desc были бы примитивными типами - всё бы работало как надо, но, судя по `main_title: {}`, это не совсем так. Более того, оно бы и не с ref также бы работало, только без вызова реактивных эффектов: <br/> `let a = {k: 1}; let b = a; a.k = 2; console.log(b.k); \\ 2` <br/> <br/> Для непримитивных типов нужно глубоко клонировать объект, есть много способов, некоторые описаны в <a href="https://developer.mozilla.org/en-US/docs/Glossary/Deep_copy" rel="nofollow">https://developer.mozilla.org/en-US/docs/Glossary/...</a> также есть в различных библиотеках типа lodash или jquery. Ну или самый тупой способ через `JSON.parse(JSON.stringify())`, но он часто медленнее и не всегда применим.