Я бы хотел подключить этот класс к редуксу, как и остальные мои компоненты. Этот класс отвечает только за вычисление значений усиления и отправку их на устройство Bluetooth.
Вот как я обычно подключаю страницы / компоненты в своем приложении React Native:
import React, { Component } from 'react';
import {
View,
Image,
Keyboard,
TouchableOpacity,
StyleSheet,
Alert
} from 'react-native';
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
import { connect } from 'react-redux';
class SigninPage extends Component {
constructor(props) {
super(props);
this.state = {
loadingVisible: false,
passwordVisible: false,
isLoginSuccess: false,
};
}
async componentDidMount() {
const bluetoothIsOn = await ConnectivityManager.isBluetoothEnabled()
this.props.isBTConnectedFunc(bluetoothIsOn);
}
componentWillUnmount() {
this.clearSigninTimeout();
}
more methods and render below
}
const mapStateToProps = (state) => {
return {
}
}
const mapDispatchToProps = (dispatch) => {
return {
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(SigninPage);
Однако, когда я пытаюсь подключить этот класс, я получаю сообщение об ошибке.
import SOMEBluetoothManager, { SOMEBluetoothEventEmitter } from '../nativeComponents/SOMEBluetooth/SOMEBluetooth';
import { connect } from 'react-redux';
const MAX_PAYLOAD_LENGTH = 14;
class SOMEDataTransfer {
constructor(gainParamList) {
this.gainParamList = gainParamList;
this.transferTimeoutDuration = 10000;
// console.log('lets llook again at the gainparamlist that is being sent over inside the constructor ', gainParamList);
}
start(onFinishCallback) {
this.onFinishCallback = onFinishCallback;
this.setupBluetoothEventListeners();
let initialChannel = 0;
let initialGains = this.getChannelGains(initialChannel);
let transferChannelGainsCompleteCallback = (success, channel) => {
if (success) {
let newChannel = channel + 1;
if (newChannel >= this.gainParamList.length) {
// console.log('Finished! and now lets look at success and channell, onFinishcallback', success, channel, onFinishCallback);
this.removeBluetoothEventListeners();
if (onFinishCallback) {
this.onFinishCallback(true);
}
}
else {
console.log('Channel ' + channel + ' transfer complete');
let gains = this.getChannelGains(newChannel);
this.transferChannelGains(gains, newChannel, 0, transferChannelGainsCompleteCallback);
}
}
else {
console.log('Channel ' + channel + ' transfer failed');
this.removeBluetoothEventListeners();
if (onFinishCallback) {
this.onFinishCallback(false);
}
}
}
this.transferChannelGains(initialGains, initialChannel, 0, transferChannelGainsCompleteCallback);
}
}
const mapStateToProps = (state) => {
return {
}
}
const mapDispatchToProps = (dispatch) => {
return {
}
}
export default connect(mapStateToProps, mapDispatchToProps)(SOMEDataTransfer);
Когда я пытаюсь подключить этот класс через Connect. Я получаю эту ошибку:
Как я хотел бы создать действие / редуктор, чтобы я мог устанавливать и получать доступ к значениям усиления в любом месте приложения.