Использование промежуточного программного обеспечения для этого сценария нецелесообразно (если я правильно понял ваш вопрос :)). Я опишу 3 варианта, которые вы можете использовать для достижения этой цели:
Вариант 1
возвращает оба значения selectedTeamId
и teams
в mapStateToProps
, это позволит вам чтобы найти команду, которая вам нужна для каждого выбранного идентификатора:
mapStateToProps({ selectedTeamId, teams }) {
return {
selectedTeamId,
teams
}
}
Таким образом, вы можете получить доступ к этим реквизитам в render
:
render() {
const { teams, selectedTeamId } = this.props;
return <Team team={teams.find(team => team.id === selectedTeamId)} />
}
Примечание: <Team />
это просто компонент Я сделал для демонстрации
Вариант 2
Вы можете использовать перебрать библиотеку, чтобы избежать повторного вычисления этого пропета:
import { createSelector } from 'reselect'
const teams = state => state.teams;
const selectedTeamId = state => state.selectedTeamId;
const subtotalSelector = createSelector(
teams,
selectedTeamId,
(teams, selectedTeamId) => items.find(team => team.id === selectedTeamId)
)
Опция 3
Создать действие, которое будет отправлять SELECT_TEAM с teamId
export function setSelectedTeam(id) {
return { type: types.SELECT_TEAM, payload: id };
}
Создать редуктор для этого типа и вернуть selectedTeam
:
[types.SELECT_TEAM]: (state, payload)=> {
return {
...state,
selectedTeam: state.teams.find(team => team.id === payload.id)
};
},
Таким образом, вы можете иметь селектор для selectedTeam
export const getSelectedTeam = state => state.selectedTeam;
Надеюсь, это поможет