Как я могу получить доступ к избыточным состояниям внутри обычных функций, которые не являются реагирующими компонентами? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть js-файл, содержащий различные функции, мне нужно получить доступ к обновленному состоянию избыточности в некоторых из этих функций, но я не знаю, как я могу получить состояния избыточности.

Я попытался создать файл с этим кодом и назвал его reduxStore.js:

import { createStore } from 'redux';
import reducers from './../reducers';

const storeBox = createStore(reducers);

export default storeBox;

и в своем целевом js-файле я попытался импортировать его следующим образом:

import storeBox from './reduxStore';

и затем я попытался получить доступ к состояниям внутри моей функции:

export function PlaySounds(type, state, soundSetting = null) {
    let states = storeBox.getState();
    console.log('ssss', states)
    if (states.settingPage.music) {
        switch (type) {
            case 'gamemusic':
                if (state == true) {
                    gameSound.play().setNumberOfLoops(-1);
                    //sound.setNumberOfLoops(-1);
                } else {
                    //console.log('stopped Trigger')
                    gameSound.setCurrentTime(0).stop();
                }
                break;
            case 'singlemode':
                if (state == true) {
                    singlemode.play().setNumberOfLoops(-1);
                } else {
                    singlemode.setCurrentTime(0).stop();
                }
                break;
            case 'singlemodeFast':
                if (state == true) {
                    singlemodeFast.play().setNumberOfLoops(-1);
                } else {
                    singlemodeFast.setCurrentTime(0).stop();
                }
                break;
            case 'singlemodeShock':
                if (state == true) {
                    singlemodeShock.play(() => {
                        singlemode.play().setNumberOfLoops(-1);
                    });
                    //sound.setNumberOfLoops(-1);
                } else {
                    singlemodeShock.stop();
                }
                break;
            case 'onlinemode':
                if (state == true) {
                    onlinemode.play().setNumberOfLoops(-1);
                    //sound.setNumberOfLoops(-1);
                } else {
                    onlinemode.setCurrentTime(0).stop();
                }
                break;
            case 'buttonClick':
                buttonClick.play();
                break;
            case 'winner':
                winnerSound.play();
                break;
        }
    }
}

Но проблема в том, что он будет возвращать исходное состояние все время, а не обновленные состояния редукции.так что это бесполезно.

Как это исправить?

1 Ответ

1 голос
/ 25 июня 2019

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

storeBox.subscribe(PlaySounds) после функции.

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