Неожиданный токен - JavaScript-выражение в JSX

У меня есть поле ввода, которое должно быть доступно только для чтения при изменении состояния. Итак, я написал JSX, как показано ниже:

render: function() {
var reo = 'readonly';
return (<input id="output" type="Text" value="0" {reo}/>);
}

В приведенном выше кодовой переменной reo является жестко закодированным, но в реальном сценарии он будет оцениваться на основе некоторого условия, такого как:

var reo = (isDisabled ? 'readonly' : '');

Когда я запускаю это, он выдает неожиданную ошибку токена. Принимая во внимание, что когда я пишу JSX так:

<input id="output" type="Text" value="0" readonly/>

это работает нормально. Пожалуйста, объясните мне, почему эта ошибка происходит и как ее исправить.

1 ответ

Решение

Проблема в этом примере заключается в том, что вы передаете строку, в то время как реакции ожидают реквизит с именем readonly,

Следующее должно работать:

render: function() {
  var reo = true;
  return (
    <input id="output" type="Text" value="0" readonly={reo} />
  );
}

Или используя isDisabled:

render: function() {
      return (
        <input id="output" type="Text" value="0" readonly={isDisabled} />
      );
    }
Другие вопросы по тегам