У меня есть контейнер, который в настоящее время имеет следующую структуру:
// container.ts
import { connect } from 'react-redux';
import { selectItems } from './actions';
import { selectSelectedItems } from './selectors';
import component from './component';
const mapStateToProps = (state: AppState) => ({
selected: selectSelectedItems(state),
});
const mapDispatchToProps = {
select: selectItems,
}
export default connect(mapStateToProps, mapDispatchToProps)(component);
Однако в этом случае каждый экземпляр компонента будет обновляться всякий раз, когда изменяется выбор.
Что мне действительно нужно, так это функция , которая выводит состояние из хранилища с избыточностью , которое может вызываться в определенных обработчиках событий по соображениям производительности. Например, мне нужно условно открыть модал, если они выпадают с выбранными элементами. Это будет реализовано так.
onDrop = () => {
// if there are any selected at all,
// open a modal for the user.
const selected = this.props.getSelected();
if (selected.length) {
this.openMoveRequestModal();
}
}
Я могу заставить его «работать» довольно уродливым методом.
export default class ProductGrid extends React.PureComponent<Props> {
static contextTypes = { store: PropTypes.object };
onDrop = () => {
const state = this.context.store.getState();
// do whatever here
}
}
Но в идеале , я бы просто смог пройти через ссылку на функцию, которая получала бы состояние из моего хранилища редуксов.
Можно ли передать функцию, которая выводит состояние через контейнер react-redux
?