In the MobX with React docs, in the Side effects and observables section there is a receipe to respond to changes inside a useEffect
hook.
import React from 'react'
import { autorun } from 'mobx'
function useDocumentTitle(store: TStore) {
React.useEffect(
() =>
autorun(() => {
document.title = `${store.title} - ${store.sectionName}`
}),
[], // note empty dependencies
)
}
The example combines React.useEffect
with mobx.autorun
(but it could be mobx.reaction
), but I can not see the benefit of autorun
in the code. Once we are inside useEffect
we can track our dependencies in the dependency array. The code is more clear, there is no need to dispose()
and useEffect
has a clear dependency array with what is needed.
import React from 'react'
import { autorun } from 'mobx'
function useDocumentTitle(store: TStore) {
React.useEffect(() => document.title = `${store.title} - ${store.sectionName}`
,[store.title, store.sectionName])
}
Is there any reason to follow the example as given?
Here is a Code Sandbox