无需任何MapStatetoprops即可连接Redux,并且仍然将其作为道具



我看到了这种奇怪的方式在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);

最新更新