Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 我如何访问正常函数中的redux状态,这些函数不是react组件?_React Native_Redux - Fatal编程技术网

React native 我如何访问正常函数中的redux状态,这些函数不是react组件?

React native 我如何访问正常函数中的redux状态,这些函数不是react组件?,react-native,redux,React Native,Redux,我有一个包含不同函数的js文件,我需要访问其中一些函数中更新的redux状态,但我不知道如何获取redux状态 我尝试使用此代码创建一个文件,并将其命名为reduxStore.js: import { createStore } from 'redux'; import reducers from './../reducers'; const storeBox = createStore(reducers); export default storeBox; 在我的目标js文件中,我尝试像

我有一个包含不同函数的js文件,我需要访问其中一些函数中更新的redux状态,但我不知道如何获取redux状态

我尝试使用此代码创建一个文件,并将其命名为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;
        }
    }
}
但问题是它将始终返回初始状态,而不是更新的redux状态。所以这没用


如何解决此问题?

您尚未订阅该商店。如果要查看更改,您需要连接到应用商店。试着做


storeBox.subscribe(PlaySounds)
在功能完成后。

我尝试过,但没有成功。仍在获取初始状态您在函数外部编写了订阅,对吗?嗯。与其像那样导出它,不如尝试导出默认播放声音订阅后。