我正在使用javascript async等待服务器(主要是从componentDidMount或componentDidUpdate)对服务器进行服务调用,但是当我想将响应作为道具发送给其他组件时,我目前正在使用响应更新组件的状态。但是由于作为用户我实际上并未修改该特定状态,因此它有点像浪费的变量。有什么办法可以将它作为道具添加到我的组件中,而不是设置状态。
class Example extends React.Component {
constructor(props){
super(props);
this.state = {data: {}}
}
componentDidMount(){
const {data} = await getService();
this.setState({data})
}
render(){
return (<ChildComponent data/>)
}
}
是否有可能从响应中获取作为属性的数据作为道具,而不是将其设置为状态并从状态中检索
答案 0 :(得分:0)
假设您的示例是实际应用的按比例缩小版本,那么我想说您在做什么。否则,我会有一个小的查询,询问为什么他们不使用ChildComponent来获取数据以避免“道具钻探”,即,将道具穿过多层组件传递,最终到达关心数据的组件。
答案 1 :(得分:0)
在状态componentDidMount
中进行异步调用是不合适的,因为只要状态改变,componentDidMount
就会被调用==>对该服务的调用很多。
使用Redux(包含应用程序状态的状态管理工具),通过执行@async(在此使您所有的呼叫服务并自动连接到其他组件而无需传递它),是一种更优雅的方法道具)