Est-il possible de dispatcher une action dans un reducer lui-même ? J'ai une barre de progression et un élément audio. L'objectif est de mettre à jour la barre de progression lorsque l'heure est mise à jour dans l'élément audio. Mais je ne sais pas où placer l'eventhandler ontimeupdate, ni comment envoyer une action dans le callback de ontimeupdate, pour mettre à jour la barre de progression. Voici mon code :
//reducer
const initialState = {
audioElement: new AudioElement('test.mp3'),
progress: 0.0
}
initialState.audioElement.audio.ontimeupdate = () => {
console.log('progress', initialState.audioElement.currentTime/initialState.audioElement.duration);
//how to dispatch 'SET_PROGRESS_VALUE' now?
};
const audio = (state=initialState, action) => {
switch(action.type){
case 'SET_PROGRESS_VALUE':
return Object.assign({}, state, {progress: action.progress});
default: return state;
}
}
export default audio;
0 votes
Qu'est-ce que
AudioElement
? Il me semble que ça ne devrait pas être quelque chose d'officiel.0 votes
Il s'agit d'une classe ES6 simple (sans réaction), contenant un objet audio. Si elle n'était pas dans l'état, comment pourrais-je contrôler la lecture/arrêt, le saut, etc. ?
2 votes
Vous pourriez vouloir regarder dans redux saga