Я пишу приложение таймера обратного отсчета React-Native, в котором я хочу воспроизводить звуки в определенные секунды, а также во время некоторых других событий.Я не смог найти много информации о том, как обрабатывать загрузку звука и проигрывание звуков в приложении Redux.Я нашел одну реализацию, в которой звуковые объекты хранились в хранилище Redux, а звуки воспроизводились с помощью промежуточного программного обеспечения Redux, например:
MiddlewareRegistry.register(store => next => action => {
switch (action.type) {
case PLAY_SOUND:
_playSound(store, action.soundId);
break;
return next(action);
});
/**
* Plays sound from audio element registered in the Redux store.
*
* @param {Store} store - The Redux store instance.
* @param {string} soundId - Audio element identifier.
* @private
* @returns {void}
*/
function _playSound({ getState }, soundId) {
const sounds = getState()['features/base/sounds'];
const sound = sounds.get(soundId);
if (sound) {
if (sound.audioElement) {
sound.audioElement.play();
} else {
logger.warn(`PLAY_SOUND: sound not loaded yet for id: ${soundId}`);
}
} else {
logger.warn(`PLAY_SOUND: no sound found for id: ${soundId}`);
}
}
Однако документы ReduxРекомендуем не хранить несериализуемые данные в хранилище, которое нарушает данная реализация.
У меня есть идея сохранить массив ожидающих звуков в хранилище Redux, и у меня есть контейнер, который прослушивает изменения этого массива, воспроизводит звук по очереди и удаляет его с помощью создателя действий.Это звучит как разумный подход или есть лучшие способы обработки звуков в Redux?