0

我有一个组件Details.js,我在选择下拉列表中填充来自 4 个联赛的团队

根据选择的团队,State.js组件中的状态会更新

问题在于,根据所选团队的不同,有时会呈现状态State.js,有时不会呈现状态。

控制台中没有错误,并且在 redux 工具中状态已正确更新。

我正在使用https://www.api-football.com/来使用数据。

这里是相关代码

reducers/index.js我创建了一个初始状态

RECEIVE_LEAGUE
  league:[],

case RECEIVE_LEAGUE:
  return {...state, leagueId: action.json};

actions/index.js

export const receivedLeague = json => ({
  type: RECEIVE_LEAGUE,
  json: json
});

我在getTeamsDetailById(id)

dispatch(receivedLeague(id));

Details.js组件中

leagueId在顶部添加了状态

并编辑了我的selectTeamStat功能

  const [selectedOption, setSelectedOption] = useState('');

  const selectTeamStat = (evt) => {
     const { value } = evt.target;
     setSelectedOption(value)
     getStats(leagueId, value);
  };

我在代码框中提供了演示,重现这里的案例(必须使用 Google Chrome 扩展程序 CORS Unblock 来查看或任何其他扩展程序解除 CORS 的阻塞)

要重现该案例,例如在 Serie A 中选择 Flamengo,状态会更新且不会在组件中呈现,但如果您选择 Botafogo,则会呈现状态。为什么?

4

1 回答 1

1
if (
  teamsStatsWinHome !== null && // maybe you also need to add `typeof object === 'undefined'`
  teamsStatsWinAway !== null &&
  teamsStatsDrawHome !== null &&
  teamsStatsDrawAway !== null &&
  teamsStatsLoseHome !== null &&
  teamsStatsLoseAway !== null
)

为避免重复,您也可以使用,但也许第一种方法更容易阅读

const isNullOrUndefined = (object) => object === null || typeof object === 'undefined';

if(![
  teamsStatsWinHome,
  teamsStatsWinAway,
  teamsStatsDrawHome,
  teamsStatsDrawAway,
  teamsStatsLoseHome,
  teamsStatsLoseAway,
].some(isNullOrUndefined))
于 2020-03-18T15:53:08.560 回答