javascript - 如何在显示开关组件之前等待 API 响应
问题描述
我的问题是我想显示一个带有defaultvalue = {true}
if的 Switch this.state.params4GInfo.status4G = 1
,否则一个带有defaultvalue = {false}
. 但是这里的问题是一开始就this.state.params4GInfo.status4G
等于undefined
,然后在渲染组件后它取值为1。那我怎么能等到this.state.params4GInfo.status4G
拿1呢?
这是我的组件:
class MyComponent extends React.Component {
componentDidMount(){
this.props.getParameteres4GAction()
}
static getDerivedStateFromProps(nextProps, prevState) {
if (nextProps.params4GInfo !== prevState.params4GInfo && nextProps.params4GInfo) {
return {params4GInfo: nextProps.params4GInfo,status:nextProps.params4GInfo.status4G};
}
else {
return null;
}
}
render() {
return (
<div>
<Form onSubmit={this.handleSubmitModeConnection}>
{console.log("statussss",this.state.status)}
<div className="sn-4GSetup-switchPos">
{console.log("statusssss",this.state.status)}
{this.state.params4GInfo.status4G !== undefined &&
this.state.params4GInfo.status4G == 1 ?
<div>
<Switch
onChange={this.changeHandlerActivied}
defaultChecked={true}
/>
</div>:<div>
{console.log("i'm hereeeee")}
<Switch
onChange={this.changeHandlerActivied}
defaultChecked={false}
/>
</div>}
</div>
</Form>
);
}
}
解决方案
考虑到getParameteres4GAction()是一个 API 事件,您将不得不让您的 componentDidMount 循环等待 API 调用完成。尝试这个
async componentDidMount(){
await this.props.getParameteres4GAction()
}
分享你的完整代码..我可以告诉你,它是如何工作的..
推荐阅读
- c++ - 如何将值分配给像数组一样增加的变量但不使用数组
- java - Spark Hbase:如何将数据帧转换为 Hbase org.apache.hadoop.hbase.client.Result
- c++ - 使用 setprecision 更新变量值
- apple-push-notifications - CloudKit 正在限制来自 CKQuerySubscription 的推送通知的数量
- mysql - 在 mysql 中为我的外部连接起别名的正确方法是什么,这样我就不会收到“非唯一表/别名”错误?
- http - 如何从网页中获取所有结果,就像浏览器在完成向下滚动时显示的那样
- python - 如何让 python 与交互式 shell 环境一起工作?
- mysql - 在 BigQuery 中使用 `With` 然后 `Delete`
- python - 如何在 LSTM 模型上使用 GridSearchCV?
- python - 有没有更“逻辑”的形式来编程这个函数?