мою тринарку
{/* eslint-disable-next-line no-nested-ternary */}
{ isOpen ? 'Cancel' : (match ? 'Add' : 'Add found') }
const btnText = { [isOpen]: 'Cancel', [match]: 'Add', [true]: 'Add found' }[true]
Я с опытом всё меньше использую такие выкрутасы. В таких случаях обхожусь функцией function getText(isOpen, match) { if (isOpen) { return 'Cancel'; } if (match) { return 'Add'; } return 'Add found'; }
Многословно, зато понятно с первого взгляда даже начинающему.
Спасибо, но с тринаркой возможно как то решить ? так больше кода получается
Вложеные тернарки - не ок. Но если ты экономишь символы — используй :)
Вложеные тернарки - не ок - почему не ок ?
Они усложняют чтение кода.
Если eslint ругается, скорее всего он сам может это обосновать :) https://eslint.org/docs/rules/no-nested-ternary
Никто не оценил 😕
Я успешно подавил крик ужаса.
а что там оценивать вообще?
Альтернативы?
что альтернативы?
Какие есть альтернативы приведенному снипету?
ты вопрос читал? Я спросил что оценивать?
https://t.me/js_noobs_ru/455334
const sw = (s) => ({ isOpen: "Cancel", match: "Add", true: "Add found" })[s]
isOpen и match содержат буллевые значения
<button>{sw}</button> не возвращает ничего
Eslint показал что так нужно писать const btnText = { [isOpen]: 'Cancel', [match]: 'Add', [true]: 'Add found' }.true и добавил <button>{btnText}<button/> вернул значение true - 'Add found'
"вернул значение true - 'Add found'" - это не понял
результат - <button> Add founds </button>
Произошло ожидаемое или ошибка?
isOpen - некая логика который возвращает true/false зависимо от этого я показываю кнопку match - срабатывается ниже 575px экранах true - первичное состояние кнопки
Обсуждают сегодня