как мне расширить этот класс до редукса? - PullRequest
0 голосов
/ 21 мая 2019

Я бы хотел подключить этот класс к редуксу, как и остальные мои компоненты. Этот класс отвечает только за вычисление значений усиления и отправку их на устройство 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. Я получаю эту ошибку: enter image description here

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

1 Ответ

0 голосов
/ 21 мая 2019

Я думаю, вам не нужен метод connect, потому что он создан для приложения React. Вместо этого играйте с методом хранения, таким как: store.dispatch, store.subscribe и store.get.

Вы можете следовать этому учебнику .

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