我有一个包含不同功能的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状态。所以没用。
我该如何解决?
答案 0 :(得分:1)
您尚未订阅商店。如果要查看更改,则需要连接到商店。尝试做
storeBox.subscribe(PlaySounds)
。