React native 我如何访问正常函数中的redux状态,这些函数不是react组件?
我有一个包含不同函数的js文件,我需要访问其中一些函数中更新的redux状态,但我不知道如何获取redux状态 我尝试使用此代码创建一个文件,并将其命名为reduxStore.js: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文件中,我尝试像
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)
在功能完成后。我尝试过,但没有成功。仍在获取初始状态您在函数外部编写了订阅,对吗?嗯。与其像那样导出它,不如尝试导出默认播放声音代码>订阅后。