我看到了这种奇怪的方式在redux中完成了事情,我很难理解做什么以及如何做。这是连接代码
export default connect(({ cricketFantasy: { matchDetails } }) => {
let innings = [];
let matchInfo = null;
let currentOver = -1;
let currentPlayer1Id = null;
if (matchDetails && Object.keys(matchDetails).length) {
const {
homeTeam,
awayTeam,
tournament,
gameDateTime,
matchDescription,
venue,
currentInning,
officials,
squad,
toss,
matchState
} = matchDetails;
if (homeTeam && homeTeam.innings && homeTeam.innings.length) {
homeTeam.innings.forEach(inning => {
innings.push({
order: inning.order,
battingTeamName: inning.battingTeam,
isCurrentInning: inning.id === currentInning.id
});
});
}
// some more operations which i deleted as that is not major concern
return {
innings,
matchInfo,
currentOver,
currentPlayer1Id,
currentPlayer2Id,
tournamentId,
squad: squadObj,
matchState: matchStateStr,
isFetchingMatchDetail: false,
routes,
detailsData: matchDetails
};
})(withStyles(styles)(withLocale(CricketScore)));
我试图在组件的渲染方法内部登录,我看到返回的任何东西都可以看作是道具。t请参阅该代码所在的.js文件中任何地方的cricketfantasy术语。我也看不到任何Mapstatetoprops。
{ cricketFantasy: { matchDetails } }
是破坏性的分配。
它依赖于包含cricketFantasy
属性的state
,其值是具有matchDetails
属性的对象。
基本上只是一种花哨的形式:
const matchDetails = state.cricketFantasy.matchDetails;
或
const { matchDetails } = state.cricketFantasy;
const mapStateToProps = ({ cricketFantasy: { matchDetails } }) =>
console.log({ matchDetails });
const state = {
cricketFantasy: {
matchDetails: "Hello"
}
};
const mapStateToProps2 = (state) => {
const matchDetails = state.cricketFantasy.matchDetails;
console.log({ matchDetails });
};
mapStateToProps(state);
mapStateToProps2(state);