Добавление обработчиков событий onPress к уже существующим кнопкам (слушатель событий?) - PullRequest
0 голосов
/ 30 июня 2019

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

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

Как я могу сделать это без изменения каждого из событий onPress отдельно?

Есть ли что-то похожее на document.addEventListener, но для мобильных приложений?

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

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

Вы можете создать «глобальную» функцию для кнопок, где все они проходят, а затем вызывают фактическую кнопку. Например:

onPressHandler=(buttonPressedFunction)=>{
    //Do what you need
    buttonPressedFunction()   
}

firstButtonClick=()=>{
    //first button click function   
}
secondButtonClick=()=>{
    //second button click function   
}


//render

<Button title="first button" onPress={()=>{this.onPressHandler(this.firstButtonClick)}}/>

<Button title="second button" onPress={()=>{this.onPressHandler(this.secondButtonClick)}}/>

Еще нужно изменить onPress на каждой кнопке, но, по крайней мере, она проходит через одну функцию, делая функцию нажатия кнопки по-прежнему независимой

0 голосов
/ 30 июня 2019

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

onPressButtonHandler = (key, event) => {
     if(key == ‘one’){
     // your code here.
     }
     if( key == ‘two’){
     // code two here.
     }
}

В вашей функции рендеринга:

<button onPress={this.onPressButtonHandler.bind(this, ‘one’)}>One</button>
 <button onPress={this.onPressButtonHandler.bind(this, ‘two’)}>Two</button>
...