Как я могу передать итератор одной функции карты в другую функцию в качестве аргумента - PullRequest
0 голосов
/ 29 мая 2019

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

return (    
<Table className={classes.table} aria-labelledby="tableTitle">
        <EnhancedTableHead />

        <TableBody>
          {dataList.map((item, item_idx) => {

return (
                <TableRow
                  hover
                  tabIndex={-1}
                  key={item.id}
                >
                  <TableCell padding="checkbox">
                  </TableCell>
                  <TableCell  padding="none">
                      {item.dataName}--{item.datatId}
                  </TableCell>
                  <TableCell padding="none"  ><SwitchButton/></TableCell>
                  <TableCell    >


{
  this.state.user.map((ab, ab_idx) =>
  <li className = "display">

{isSwitchOn === false ?  <input  type = 'search' placeholder = "id"  id="name" name = "name"  onChange={(e) => this.handleidChange(e,ab_idx)}/>: " All"}
{isSwitchOn === false ? <a href="javascript:void(0)" className = "removeIcon" style={{display:(this.state.user.length > 1 )? "inline" : "none"}} onClick={() => {this.removeItem(this.state,ab_idx)}}   >Remove</a> : "" }

</li>
     )}


</TableCell>
                  <TableCell  padding="none">
                   <Button className="user-edit-btn" style={{display:(isSwitchOn === false) ? "block" : "none", textTransform: 'capitalize',}}  variant="contained" onClick={() => {this.insertTextBox(item)}}  >
                  Add User
                  </Button>
                </TableCell>
                </TableRow>
              );

            })}

          {(
            <TableRow style={{ height: 49 }}>
              <TableCell colSpan={6} />
            </TableRow>
          )}
        </TableBody>
      </Table>
)

Я хочу, чтобы «ab» передавался в качестве аргумента функции insertTextBox (item) всякий раз, когда я нажимаю кнопку ADD USER.,При этом выдает ошибку «Ошибка: Соседние элементы JSX должны быть обернуты во вложенный тег. Хотите фрагмент?»

1 Ответ

0 голосов
/ 29 мая 2019

Вам нужно связать handleidChange в вашем конструкторе следующим образом:

this.handleidChange = this.handleidChange.bind(this)

Тогда ваш обработчик должен быть таким:

handleidChange(ab_idx, e){
   //do smth
}

Затем передайте обработчик следующим образом:

<input  type = 'search' placeholder = "id"  id="name" name = "name"  
onChange={this.handleidChange.bind(this, ab_idx)}/>`
...