Как обычно обрабатываются звуки в приложении Redux? - PullRequest
0 голосов
/ 13 сентября 2018

Я пишу приложение таймера обратного отсчета 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...