Я сделал userStore
для управления состоянием аутентификации.Когда firebase auth успешно извлекает данные аутентификации, userStore
действия для изменения свойства loading
.
class userStore {
constructor() {
auth.onAuthStateChanged(user => {
this.login(user)
this.loadingDone()
})
}
@observable user
@observable loading = true
@computed get getUser() {
return this.user
}
@computed get getLoading() {
if (this.user) {
return false
}
return this.loading
}
@action
login(user) {
this.user = user
}
@action
logout() {
this.user = null
}
@action
loadingDone() {
this.loading = false
console.log(this.loading)
}
}
Теперь я хочу изменить свой компонент PrivateRoute
на свойство userStore.loading
.Но без console.log(userStore.getLoading)
MOBX НЕ ОБНОВЛЯЕТ КОМПОНЕНТ.
@observer(['userStore'])
class PrivateRoute extends Component {
render() {
const { component: Component, userStore } = this.props
console.log(userStore.getLoading) # <- WHAT HAPPENS HERE?????
return (
<Route
render={props =>
userStore.getLoading ? (
<div>getting auth...</div>
) : userStore.getUser ? (
<Component {...props} />
) : (
<Redirect
to={{
pathname: '/login',
state: { from: props.location }
}}
/>
)
}
/>
)
}
}
Я не могу понять поведение Mobx по умолчанию.Это зависит от console.log
?