Как передать обновленное состояние методу - React Native

Я работаю над этим приложением, в котором я использую библиотеку Bluetooth (https://github.com/Polidea/react-native-ble-plx), и мне нужно использовать base64 для передачи строки из пользовательского ввода в модуль Bluetooth. Я новичок в React Native, поэтому вот мой подход к выполнению этой задачи:

  1. В конструкторе я сделал новое состояние входной строки
constructor() {
        super()
        this.manager = new BleManager()
        this.setState = {inputString: ''};
    }
  1. Затем я добавил способ обновления состояния inputString при вводе строки:
<TextInput 
       style  = {styles.input}
       placeholder = 'e.g. Hello'
       placeholderTextColor = 'white'
       onChangeText = {inputString => this.setState({inputString})}/>
  1. Затем я добавил функцию для преобразования введенной пользователем строки в base64, чтобы я мог использовать ее для метода Bluetooth для записи в модуль:
encode = () =>{
        var encodedName = base64.encode(this.state.inputString);
        alert(encodedName);
    }
  1. Наконец, я хочу использовать эту новую обновленную переменную (encodedName) в методе из библиотеки Bluetooth. Метод следующий -

device.writeCharacteristicWithResponseForService (

serviceUUID: UUID,

характеристикаUUID: UUID,

valueBase64: Base64)

Вот моя версия этого кода:

device.writeCharacteristicWithResponseForService('12ab', '34cd', 'base64')
     .then((characteristic) => {
      console.info(characteristic.value);
      return })
  • Вот где моя проблема. Могу ли я просто вызвать функцию вместо base64 или есть другой способ вызвать обновленную переменную?

Заранее спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
22
1

Ответы 1

Кажется, что вместо этого вы должны передать закодированную строку в качестве третьего параметра функции записи:

const base64Data = base64.encode(this.state.inputString);
device.writeCharacteristicWithResponseForService('12ab', '34cd', base64Data);

Возможно ли, что я неправильно закодировал строку? Я получаю сообщение об ошибке: «TypeError: input.charCodeAt не является функцией. (В 'input.charCodeAt (i ++)' значение 'input.charCodeAt' не определено)» в классе base64. Спасибо за помощь!

sopatd 30.03.2021 10:58

Хм. Когда вы console.info this.state.inputString прямо перед его кодированием, имеет ли он правильное значение? Вы используете функцию кодирования из react-native-base64 или это другая библиотека?

Marek Lisik 30.03.2021 14:10

Другие вопросы по теме