this feels weird. your mutating the state of a component. Maybe we should pass in an observable `shouldFocus` as an argument.