Итак, есть три логических значения. Только одно логическое значение может быть истинным одновременно. Если одно из логических значений уже истинно, оно должно оставаться истинным, если условие попадает в него, оно не должно возвращаться к ложному. Обратите внимание, что activeCrate1 по умолчанию должен быть истинный.
Когда условие достигает activeCrate2, оно истинно, а все остальные логические случаи ложны.
Когда условие достигает activeCrate3, оно истинно, а все остальные логические случаи ложны.
Но как мне нажать activeCrate1 и снова вернуть ему значение true, а все остальные логические значения должны быть false?
И например, если условие попадает в activeCrate1, который уже является Истинный, оно должно оставаться истинным и ничего не должно измениться. Как я могу заставить это работать так?
Всего два вопроса, но их нужно реализовать в одном коде.
Мой код выглядит так:
activeCrate1: true,
activeCrate2: false,
activeCrate3: false
if (state.activeCrate2 === false ) {
state.activeCrate2 = true
state.activeCrate1 = false;
state.activeCrate3 = false;
} else if (state.activeCrate3 == false){
state.activeCrate3 = true;
state.activeCrate1 = false;
state.activeCrate2 = false;
добавьте несколько вариантов использования и разделите вопрос на части.
Все, что вам нужно, это еще один {activeCrate1: true, activeCrate2: false, activeCrate3: false,} после else if. Я думаю, это то, что ты хотел
Мой код работает для activeCrate2 и activeCrate3, но случай для activeCase1 не будет работать должным образом, поэтому я не включил его в код.
Только одно логическое значение может иметь значение True, а когда это произойдет, все остальные значения должны быть False. Если activeCrate1 уже имеет значение True, он должен оставаться True, если одно и то же условие встречается с ним дважды подряд или бесконечное количество раз, поэтому внутри него не восстанавливается значение True-False.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если я правильно понял, вы хотите, чтобы в списке был только один активный элемент, и пусть он со временем меняется.
Я думаю, что было бы легче избежать управления каждым случаем с помощью if, потому что будет легко оставлять ошибки каждый раз, когда вы хотите добавить activeCrate.
Позвольте мне перефразировать то, что, как мне кажется, вы сказали:
Вот javascript-эквивалент es5 того, что я написал:
var activeCrates = [true, false, false];
function setActiveCrate(index) {
// Short circuit code when the same crate is active
if (activeCrates[index] === true) {
return;
}
// Find previous active crate in order to set it to false
var previousActiveCrate = activeCrates.indexOf(true);
activeCrates[previousActiveCrate] = false;
// Set current active crate to true
activeCrates[index] = true;
}
Также обратите внимание, что я изменяю массив activeCrates.
Я не понимаю вопроса. Вы указываете точные шаги того, как он должен себя вести, а затем спрашиваете, как это делать. Вы буквально говорите: «Если условие выполняется ... оно должно оставаться верным». Итак, напишите инструкцию
ifи не меняйте ее?