реагировать JS SetState внутри встроенной функции события - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу проверить выпадающие таблицы для повторяющихся значений

///////////////

enter image description here

///////////////

Я хочу установить свойство ошибки в setState для дублирующегося значения выпадающего списка, я попытался сделать это внутри встроенной функции. но я думаю, что этот путь невозможен.

    </TableRow>
{
    item.map(k => (
        <TableRow >

            <TableCell >
                <select  onChange={function(e){
                     item.forEach(k1 => {
                        if(k1.key===e.target.value)
                        {

                       this.setState({
                          err:'duplicate'
                         })                 
                            console.log(err)
                        }
                        else
                        {
                            k.key=e.target.value
                            this.setState({
                             err:''
                               })
                        }
                     })
                     }}>

            </select>

            </TableCell>
            </TableRow>

если я попытался создать и связать функцию в классе, изменив одно раскрывающееся меню, что изменило бы все раскрывающееся меню. Пожалуйста, предложите, как я могу сделать состояние во встроенной функции

1 Ответ

0 голосов
/ 06 ноября 2019

Вам вообще не нужно делать это встроенным. Я вижу вашу мотивацию, чтобы попытаться сделать это встроенным, так как вам нужен доступ к item из цикла, но вы можете отправить этот элемент функции, не будучи встроенным:

const onSelectchange = (e, k) => {
   item.forEach(k1 => {
      if(k1.key===e.target.value)
      {

     this.setState({
        err:'duplicate'
       })                 
          console.log(err)
      }
      else
      {
          k.key=e.target.value
          this.setState({
           err:''
             })
      }
   })
 }


return(</TableRow>
  {
  item.map(k => (
  <TableCell >
      <select  onChange={(e) => onSelectchange(e, k)}>

  </select>

  </TableCell>
</TableRow>)

Вы можете создать встроенныйанонимная функция и передайте свои e и item функции, а затем выполните ее, как если бы она была встроенной.

Если вы беспокоитесь о «производительности» наличия встроенной анонимной функции, не делайте этого. Это своего рода миф.

Убедитесь, что у вас нет синтаксических ошибок, так как сейчас код некорректен для простого копирования вставки.

...