【发布时间】:2020-07-01 23:07:26
【问题描述】:
我有组件League.js,其中有 4 个包含联赛球队详细信息的框。
团队详细信息来自此 API => https://www.api-football.com/demo/api/v2/teams/league/${id}
当我点击每个联赛框时,我会在我的组件Details.js 中填充下拉列表
当我点击League.js 中的每个联赛框以便在名为Stat.js。为此,我向此端点发出呼叫请求 => https://www.api-football.com/demo/api/v2/statistics/${league}/${team}
所以我需要将league_id 和team_id 作为参数传递,我可以正确获取这两个值,但是我在如何传递每个联赛球队的第一个team_id 方面做错了。
这些是步骤,我只放了相关代码。我正在创建 firstTeamStats 我正在调度的状态
在我的行动中 => index.js
export const RECEIVE_FIRST_TEAM_STATS = "RECEIVE_FIRST_TEAM_STATS";
export const receivedFirstTeamStats = json => ({
type: RECEIVE_FIRST_TEAM_STATS,
json: json
});
.get(`https://www.api-football.com/demo/api/v2/teams/league/${id}`)
.then(res => {
let teams = res.data.api.teams;
dispatch(receivedFirstTeamStats(teams[0].team_id));
})
在我的reducer => index.js
case RECEIVE_FIRST_TEAM_STATS:
return {
...state,
firstTeamStats: action.json,
isTeamsDetailLoading: false
};
在我的 League.js 组件中
import {getTeamsStats} from "../actions";
const mapStateToProps = state => ({
firstTeamStats: state.firstTeamStats
});
const mapDispatchToProps = {
getStats: getTeamsStats,
};
const onClick = (evt, id, firstTeamStats) => {
evt.preventDefault();
getDetail(id); \\ get the team names in the Detail.js component
getStats(id, firstTeamStats); \\ get the state value for the first team in the dropdown in Detail.js component
};
<a href={`#${item.league_id}`} onClick={(e) => onClick(e, item.league_id, firstTeamStats)}
现在firstTeamStats 在上面的onclick 方法中正确返回了第一支球队的状态值,但不是现有联赛的值,而不是我点击的那个我想要的值。
但是我可以在 Details.js 组件中正确获取此内容,我已将 {firstTeamStats} 放在我复制案例的演示中 => https://codesandbox.io/s/romantic-solomon-6e0sb(使用 CORS 解锁 Chrome 扩展程序查看)
所以问题是,我怎样才能在League.js 方法中将{firstTeamStats} 正确传递给onclick 请求getStats(id, firstTeamStats),其中{firstTeamStats} 是我联盟的第一个team_id 的状态?
【问题讨论】:
-
codesandbox 不工作@koala
-
使用 CORS Unblock Chrome 扩展查看
-
@Koala7.. 我已经在下面发布了我的答案。请检查并告诉我
标签: javascript reactjs redux get codesandbox