Почему отображается Скрыть детали? Имя правда
let name=true;
const template= (
<div>
<h1>Visibility Toggle</h1>
<button >{name==true ? 'Show details': 'Hide details'}</button>
<p></p>
</div>
);
const appRoot=document.getElementById('app');
ReactDOM.render(template,appRoot);
Кроме того, сравнение вещей с true
или false
с ==
очень опасно в JS. (Многие говорят, что использование ==
вообще опасно, и его следует избегать - я не согласен, но определенно есть некоторые подводные камни, о которых следует знать, и это самая большая из них.) Обратите внимание, в частности, что name == true
выполняет тест нет, если name
правдив. или ложь - для этого вы должны просто использовать гораздо более простой name
в качестве теста в вашем тернарном операторе.
Я предполагаю, что это не полный пример, и ваша проблема возникает где-то в вашей логике. Вы можете попробовать console.info
значение name
и попытаться найти виновника. Кроме того, избегайте имен компонентов, начинающихся с маленькой буквы, так как вы не сможете использовать их внутри выражений JSX без повторной привязки их к переменным, начинающимся с заглавной буквы.
В какой среде вы это делаете?
Я изменил его на: name? 'Показать детали': 'Скрыть детали'
@Szymon Это сработало для вас?
но когда я изменил имя на false, он все еще показывает "Показать детали"
Тогда кажется, что в вашей логике есть проблемы с установкой имени true. Можете ли вы показать больше своего кода или это все? Приведенный выше код должен работать.
Также, если вы установите свое утверждение на true ? 'Show details': 'Hide details'
, это правильно? Потому что это абсолютно должно показать вам правильный результат.
готов угадать, что у вас есть строка, а не логическое значение.
@BradeyWhitlock, вот почему я спросил среду :) Это странная проблема. Я не могу воспроизвести его с помощью своих локальных инструментов или любого приличного онлайн-сайта React, но если вы попробуете это с помощью фрагмента кода ответа Stackoverflow, вы сможете воспроизвести его. Я тоже в замешательстве.
Код в вашем вопросе - это фактический код, который вы используете?
да. Это мой код. Но в JavaScript переменные имеют автоматически скорректированный тип
Вы пытались назвать
console.info
, чтобы убедиться, что это правда? Если это действительно так, тогда "Показать подробности" должно отображаться