この場合、あなたの最善の策は店のリスナーです。プレーンなリスナー関数またはレフィックスに接続されたReactコンポーネント。
function playSound() {
const audio = new Audio('audio_file.mp3')
audio.play()
}
あなたは店のオブザーバを作成し、変更のために聞くことができます:
function createSoundObserver (store) {
let prevState = store.getState()
return store.subscribe(() => {
const nextState = store.getState()
if (prevState.messages.length < nextState.messages.length) {
playSound()
}
prevState = nextState
})
}
あなたが反応コンポーネントと同じことを達成することができます
ノイズを作るために簡単な関数を仮定し
import React, {Component, PropTypes} from 'react'
import {connect} from 'react-redux'
class Notifier extends Component {
static propTypes = {
messages: PropTypes.array.isRequired
}
componentDidUpdate (prevProps) {
if (this.props.messages.length > prevProps.messages.length) {
playSound()
}
}
render() { return null }
}
export default connect((state, props) => {
const {messages} = state
return {messages}
}, {})(Notifier)
レンダリングされたツリーの中にNotifierが存在する限り、変更されたそれに応じて音を再生する。この方法の利点は、静かなままにしたい場合にイベントの購読解除に特別な注意を払う必要がなく、サーバー側のレンダリングがシームレスに機能することです。
ミドルウェア? http://redux.js.org/docs/advanced/Middleware.html – azium