@Shiki00

Почему useState не работает?

https://snack.expo.io/@miralis/eager-cashew
Итак, у меня в коде есть:
const [number, setNumber] = useState();
При добавлении setNumber(mid); в функции higher() и lower() он попросту "ломает" код. Когда, для примера, мое число 25, при нажатии на кнопку больше у меня должно выдавать 38, а выдает 75.
import React from 'react';
import { useState } from 'react';
import { StyleSheet, Text, View, Button, Alert, TextInput } from 'react-native';
export default function High() {
  const [number, setNumber] = useState();
  const [max, setMax] = useState();
  let begin = 0;
  let end = max;
  let mid = (begin + end) / 2;
  function higher() {
    begin = mid;
    mid = (begin + end) / 2;
    alert(mid);
    setNumber(mid)
  }
  let b;
  function lower() {
    end = mid;
    mid = (begin + end) / 2;
    alert(mid);
    setNumber(mid);
  }
  function start() {
    alert("Ваше число больше / меньше / равно " + mid + "?")
  }
  return (
    <View style={styles.container}>
      <Text>{number}</Text>
      <View style={styles.start}>
      <Button
        title='Start'
        style={styles.start}
        onPress={() => start()} />
      <TextInput
        style={styles.input}
        placeholder='Write num here'
        onChangeText={text => setMax(parseInt(text))}
        placeholderTextColor='#fff' />
      </View>
      <Button
        style={styles.button}
        onPress={() => {lower()}}
        title='Меньше' />
      <Button
        title='Больше'
        style={styles.button}
        onPress={() => {higher()}} />
      <Button
        title=''
        style={styles.button}
        onPress={() => alert("Легко!")} />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    justifyContent: 'center',
    padding: 10
  },
  start: {
    marginBottom: 20,
  },
  input: {
    backgroundColor: '#1E90FF',
    color: '#000'
  }
});
  • Вопрос задан
  • 258 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы