【发布时间】:2020-04-22 15:13:37
【问题描述】:
我在将状态数据从父组件传递到子组件时遇到问题。我不确定为什么会发生这种情况,因此非常感谢任何反馈。
当我在父组件的 componentDidMount() 方法中 console.log 'this.state.episodeData' 时,我的 fetch 请求返回正确的数据,但它没有显示在 componentDidMount() 方法的 console.log 中在子组件中。我做错了什么?
我已简化示例,仅显示相关的获取请求和数据处理:
父组件
import React, { Component, useState, Fragment } from 'react';
import TempComp from './tempComp';
export default class PostContent extends Component {
constructor(props) {
super(props);
this.state = {
id: '',
episodeData: [],
}
}
async componentDidMount() {
const { id } = this.props.match.params;
const response = await fetch(`http://localhost:5000/episode/${id}/playlist`);
const jsonData = await response.json();
this.setState({
episodeData: jsonData, //this is working!
id: id
});
console.log('parent fetched data', this.state.episodeData)
}
render() {
return (
<Fragment>
<TempComp playlist={this.state.episodeData} />
</Fragment>
)
}
}
子组件
import React, { Component } from 'react'
class TempComp extends Component {
constructor(props) {
super(props);
this.state = {
}
}
componentDidMount() {
console.log(‘props in child component’, this.props.playlist)
}
render() {
return (
<div>
</div>
)
}
}
export default TempComp
【问题讨论】:
-
这对您有帮助吗? codesandbox.io/s/react-fetch-example-1xd67你可以检查接收到的数据然后调用子组件..查看提供的沙箱的控制台..
标签: javascript reactjs