Реакция: Ошибка синтаксического анализа: неожиданный токен, ожидаемое "..." - PullRequest
0 голосов
/ 23 мая 2019

Итак, я в своем render() -методе, создающем <select>.Я хочу выбрать значение по умолчанию, но только когда это не <select multiple>.Я попробовал это, но столкнулся с ошибкой в ​​названии.Как бы я это правильно написал?

<select key={setting.id} multiple={setting.multiple} {setting.multiple ? '' : 'value={setting.default || ""}'}><select>
                                                      ^ error occurs here

РЕДАКТИРОВАТЬ:

Важно, чтобы выборка вообще не имела атрибута значения в случае, если он<select multiple>, чтобы смягчить предупреждение The value prop supplied to <select> must be an array if multiple is true..

Ответы [ 3 ]

3 голосов
/ 23 мая 2019

Что-то вроде ниже может решить вашу проблему:

render(){
      let selValue = "";
      if(setting.multiple)
        val = setting.default;
      return(
        <select key={setting.id} multiple={setting.multiple} value={selValue}><select>
      )
    }

РЕДАКТИРОВАТЬ: В соответствии с вашими потребностями вы также можете использовать следующий код:

let select = (<select key={setting.id} multiple={setting.multiple} value={setting.default}><select>)
if(setting.multiple)
  select = (<select key={setting.id} multiple={setting.multiple}><select>)
2 голосов
/ 23 мая 2019

В JSX {} не выводит строки, как это имеет место во многих языках шаблонов, вам нужно рассматривать это как присваивание, где левая рука - это свойство, например, multiple=, а правая рука - это выражение JavaScript, которое возвращает назначаемое значение, например, { setting.multiple } - оценивается и присваивается свойству multiple.

Теперь, чтобы установить значение в зависимости от setting, просто следуйте той же логике:

<select value={ setting.multiple ? [] : (setting.default || "") } />

РЕДАКТИРОВАТЬ: объяснить, почему ошибка говорит expected "...". Если {} не попадает в правую часть назначения, ожидается, что вы хотите распространить несколько свойств, например
const props = { value: "foo", name: "myInput" }; <select {...props } />.

1 голос
/ 23 мая 2019

Как насчет этого?

setting.multiple
? <select key={setting.id} multiple={setting.multiple}></select>
: <select key={setting.id} multiple={setting.multiple} value={setting.default || ""}</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...