Невозможно выполнить булевское значение в JSX?
Я пытаюсь отобразить логическое значение внутри JSX, однако React оценивает его как выражение и не возвращает ничего после возврата компонента.
Любое обходное решение для этого?
Вот пример
var ipsumText = true;
ReactDOM.render(
<div>
Boolean Value: {ipsumText}
</div>,
document.getElementById('impl')
);
Просто показывает скомпилированный HTML как
<div data-reactid=".0"><span data-reactid=".0.0">Boolean Value: </span></div>
EDIT: Вот ссылка JSBin для примера http://jsbin.com/nibihodoce/1/edit?html,js,output
EDIT 2: Я уже изучил альтернативу .toString(), однако, поскольку я выполняю итерацию по массиву объектов, а конкретное поле этого объекта может иметь тип string/integer/boolean стоимость. Применение .toString() ко всем 'em не кажется оптимальным.
Ответы
Ответ 1
Boolean Value: { ipsumText.toString() }
UPD: или
Boolean Value: { String( ipsumText ) }
или
Boolean Value: { '' + ipsumText }
или
{`Boolean Value: ${ipsumText}`}
или
Boolean Value: { JSON.stringify( ipsumText ) }
Я предпочитаю второй вариант. Универсальный, быстрый, работает для всех примитивных типов: Boolean( smth )
, Number( smth )
.
Ответ 2
Вы можете преобразовать логическое значение в строку, конкатенируя его с пустой строкой:
var ipsumText = true;
ReactDOM.render(
<div>
Boolean Value: {ipsumText + ''}
</div>,
document.getElementById('impl')
);
Или вы можете сделать это, назначив значение bool
переменной:
var ipsumText = true + '';
ReactDOM.render(
<div>
Boolean Value: {ipsumText}
</div>,
document.getElementById('impl')
);
Если ваша переменная не имеет значения boolean, вы должны преобразовать ее в boolean:
// `ipsumText` variable is `true` now.
var ipsumText = !!'text';