javascript - 如何在函数中添加这个到handleChange和componentDidMount的回调?
问题描述
如何在函数中添加这个到handleChange和componentDidMount的回调?
// callback from github api /api.github.com/repos/{user}/{repo}
const [repository, issues] = await Promise.all([
api.get(`/repos/${repoName}`),
api.get(`/repos/${repoName}/issues`, {
params: {
state: 'all',
// I need change this by select options = all, closed and open (per example)
per_page: 5,
},
}),
]);
// this define setState again in handleChange
this.setState({repository: repository.data,
issues: issues.data,
loading: false,
});
// Example:
componentDidMount () {functionUP();};
handleChange () {functionUpAgain(with state from params = all, open or closed);
};
解决方案
好吧,因为您正在使用await
您的功能需要async
。
所以像
class YourComponent extends React.Component {
// callback from github api /api.github.com/repos/{user}/{repo}
async fetchData(state = 'all') {
const [repository, issues] = await Promise.all([
api.get(`/repos/${repoName}`),
api.get(`/repos/${repoName}/issues`, {
params: {
state,
// I need change this by select options = all, closed and open (per example)
per_page: 5,
},
}),
]);
// this define setState again in handleChange
this.setState({
repository: repository.data,
issues: issues.data,
loading: false,
});
}
// Example:
componentDidMount() {
this.fetchData();
};
handleChange = () => {
const somestate = 'open'; // here you decide what state to pass to the fetchData
this.fetchData(somestate);
};
render() {
}
}
我无法帮助如何让状态通过,fetchData
因为您的代码没有显示它可能来自哪里。但是示例代码允许将参数fetchData
传递给将传递给 API 的方法。
您还应该考虑重构该代码,以便不总是调用api.get(
/repos/${repoName} (因为它看起来不使用任何参数并且总是返回相同的数据))
推荐阅读
- python - 如何用python刮掉嵌套的标签元素
- python - 选择相同值时的 Kivy Spinner 动作
- firebase - Firebase 实时电话数据库安全规则
- javascript - 在 react-redux 中选择所有复选框功能
- java - ConstraintLayout 内的 CardView 重叠边缘
- git - 如何列出提交中不包含在任何分支中的所有标签?
- unity3d - Unity - 玩家跌倒从搅拌机导入的物体
- distributed - 为什么 Raft 领导者在选举时发送空的 AppendEntries RPC
- javascript - 如何使用过滤器和匹配来获取内容?
- javascript - 在 div 外部单击时,其他 div 必须使用 jquery 删除其类