Да, это приемлемый прецедент - однако мы могли бы реализовать эту функцию немного чище. Например, mapStateToProps
в react-redux
принимает второй аргумент, названный ownProps
, которые являются реквизитом, передаваемый в компоненту контейнера в вопросе:
Via https://github.com/reactjs/react-redux/blob/master/docs/api.md
[mapStateToProps(state, [ownProps]): stateProps]
(Function): ... Если ownProps указывается как второй аргумент, его значение будет представлять реквизиты , переданные вашему компоненту, а mapStateToProps будет повторно вызываться всякий раз, когда компонент получает новые реквизиты.
Так что, возможно, а не инстанцирование fooBar
внутри ваш контейнер компонента, то почему бы не передать его в качестве опоры для самого компонента, а затем получить доступ к нему через ownProps
?
Some Other Component
<MyContainer fooBar={() => alert('foobar!')}
MyContainer
const mapStateToProps = (state, ownProps) => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter),
fooBar: ownProps.fooBar
}
}
Вы можете сделать это. Вы хотите получать уведомления о том, когда изменяется «fooBar», поскольку он не изменяется через Redux – Andreyco