У вас есть идентификатор нажатой кнопки в React, но затем вы хотите использовать этот идентификатор в if

У меня есть кнопки «Далее» и «Назад» под списком в моей веб-части на основе spfx. У меня также есть еще один список под ним с еще двумя кнопками «Далее» и «Назад».

Я хочу различать два набора кнопок и использовать две функции, которые я уже использую:

private _listANext(e) {

    let currentPage = this.state.ListAPage; 
    let highestPageNo = this.state.ListAPages;

    currentPage = Math.min(highestPageNo,currentPage + 1 );
    this.setState({
      ListAPage: currentPage,

    });
    console.log(e.target.id);
  }

  private _listAPrev(e) {
    let currentPage = this.state.ListAPage; 
    currentPage = currentPage <= 1 ? 1 : currentPage - 1;
    this.setState({
      ListAPage: currentPage,
    });
    console.log(e.target.id);
  }

и кнопки в рендере:

<DefaultButton
         id="aprev"
         text="Prev"
         onClick={(e) => this._listAPrev(e)}
         />
       <span> {' '}</span>
<DefaultButton
         id="anext"
         text="Next"
         onClick={(e) => this._listANext(e)}
         />

Две функции дают мне идентификатор кнопок, но если бы я использовал идентификатор в if, оставался бы идентификатор таким же в разных браузерах? Я думаю, что есть лучший способ делать то, что я пытаюсь сделать!


person NightTom    schedule 15.05.2020    source источник
comment
Я не совсем понимаю, в чем ваша проблема. id останется неизменным в разных браузерах. Вы столкнулись с проблемой, заставившей вас думать иначе? Использование id в if совершенно нормально, если оно находится в пределах видимости. Где вы пытаетесь это использовать?   -  person Brian Thompson    schedule 15.05.2020
comment
Привет, Брайан, идентификатор кнопки был другим в Edge и Chrome. Я принял ответ ниже, потому что он позволил мне использовать идентификатор, который я назначил кнопке, в функции if. Это позволило мне различать два разных набора кнопок. Я мог бы полениться и просто сделать отдельные функции для двух наборов кнопок, но я хотел сделать это немного жестче.   -  person NightTom    schedule 15.05.2020


Ответы (1)


<DefaultButton
         id="aprev"
         text="Prev"
         onClick={(e) => this._listAPrev(e,id)}
         />

вы можете передать идентификатор по этому. получить идентификатор и использовать его.

private _listAPrev(e,id) {}
person Shankar Nanda    schedule 15.05.2020
comment
Это не позволяет мне назначать идентификатор, идентификатор регистрируется как 'id__46' - person NightTom; 15.05.2020
comment
также он показывает ошибку идентификатора в рендере - не удается найти идентификатор имени - person NightTom; 15.05.2020
comment
добавить подобное onClick = {(e) = ›this._listAPrev (e, aprev)} и наоборот - person Shankar Nanda; 15.05.2020
comment
Пробовал. Он по-прежнему не меняет идентификатор кнопки - person NightTom; 15.05.2020
comment
Я получаю aprev в журнале, когда нажимаю кнопку, поэтому идентификатор передается ... так что я могу использовать это, я думаю - person NightTom; 15.05.2020