Как передать аргументы функции на функцию кнопки в React Native? - PullRequest
0 голосов
/ 22 апреля 2020

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

onPress={decrement}

..

export default function App() {
  const db = firebase.firestore().collection("users");
  const [count, setCount] = useState();
  const USER_ID = "INxK5dbadj6OmSn9mp6l";


  const decrement = (UID) => {
    var next = count - 1;
    if (next >= 0) {
      db.doc(UID).update({ Count: next });
      db.doc(UID)
        .get()
        .then(function (doc) {
          setCount(doc.data().Count);
        });
    }
  };

  return (
    <View style={styles.container}>
      <View style={styles.userContainer}>
        <Text>USER 1: {count}</Text>
        <View style={styles.buttonContainer}>
          <Button
            title="-"
            onPress={() => this.decrement.bind(this, USER_ID)} 
          />
        </View>
      </View>
    </View>
  );
}

Спасибо за любые рекомендации или помогите!

1 Ответ

1 голос
/ 22 апреля 2020

Вы должны использовать onClick вместо onPress

      <button
        title="-"
        onClick={()=>decrement(USER_ID)} 
      />

Нет смысла использовать bind, и вы не можете использовать this, потому что вы используете функциональный компонент, а не компонент класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...