Javascript 将ajax数据传递给子级

Javascript 将ajax数据传递给子级,javascript,ajax,reactjs,async-await,frontend,Javascript,Ajax,Reactjs,Async Await,Frontend,如何从ajax调用请求的父数据传递到子组件? 例如,我有这样的代码 class Parent extends React.Component { constructor(props) { super(props); this.state = {}; } async componentDidMount() { const response = await fetch(); this.setState(response.data); } re

如何从ajax调用请求的父数据传递到子组件? 例如,我有这样的代码

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {};
  }

  async componentDidMount() {
    const response = await fetch();

    this.setState(response.data);
  }

  render() {
    return (
        <ChildComponent data={this.state} /> // data={}
    );
  }
}
类父级扩展React.Component{
建造师(道具){
超级(道具);
this.state={};
}
异步组件didmount(){
const response=等待获取();
this.setState(response.data);
}
render(){
返回(
//数据={}
);
}
}

这里的问题是ChildComponent将在获取数据之前装载,所以我将在ChildComponent中获取空对象数据

检查数据是否可用

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {};
  }

  async componentDidMount() {
    const response = await fetch();

    this.setState(response.data);
  }

  render() { // Return if response is Object
    return Object.keys(this.state).length > 0
      ? <ChildComponent data={this.state} /> // data={}
      : <div>Loading...</div>
  }

  render() { // Return if response is Array
    return this.state.length > 0
      ? <ChildComponent data={this.state} /> // data={}
      : <div>Loading...</div>
  }
}
类父级扩展React.Component{
建造师(道具){
超级(道具);
this.state={};
}
异步组件didmount(){
const response=等待获取();
this.setState(response.data);
}
render(){//如果响应是对象,则返回
返回Object.keys(this.state).length>0
?//数据={}
:正在加载。。。
}
render(){//如果响应为数组,则返回
返回this.state.length>0
?//数据={}
:正在加载。。。
}
}

仅当存在一些数据时,才可以决定渲染子对象。 为此,可能不使用数据替换整个状态,而是创建一个单独的键。如果您需要在之后添加一些其他状态,则会更容易

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {};
  }

  async componentDidMount() {
    const response = await fetch();

    this.setState({ data: response.data });
  }

  render() {
    const { data } = this.state;
    return data ? <ChildComponent data={data} /> : null;
  }
}
类父级扩展React.Component{
建造师(道具){
超级(道具);
this.state={};
}
异步组件didmount(){
const response=等待获取();
this.setState({data:response.data});
}
render(){
const{data}=this.state;
返回数据?:空;
}
}

@Axnyff他正在通过完整状态,所以他知道自己在做什么,我们只是给他提供伪代码是的,我读他的初始代码太快了,删除了我的评论,你说得对,但这对我有什么帮助?我总是会得到“加载…”@netseac State会得到数据它会检查状态的长度并显示数据,我的代码会工作如果你的响应是Object我也会更新数组的代码,是的。这很有效。我以前就是不明白为什么。当状态更改时,始终再次响应调用渲染。这就是它起作用的原因。现在我明白了。非常感谢你。