反应ComponentDidMount中的axios请求不将数据作为道具传递给组件

时间:2019-12-03 05:19:16

标签: javascript reactjs axios lifecycle

大家好,我在这里看不到我的错误,希望有人可以... 这是我的提取数据类:

  export default class Auftrag extends Component {
        state = {
            auftraege: "Test",
        };

        getAuftraege = () => {
            axios.get("Auftraege/auftraege").then(e => {
                this.setState({
                    auftraege: e.data,
                });
                console.log(e.data);
            });
        };

        componentDidMount() {
            this.getAuftraege();
        }

        render() {
            return (
                <>
                    <AuftragDisplay test={this.state.auftraege} ></AuftragDisplay>
                </>
            );
        }
    }

这是我在Display类中的构造函数:

    constructor(props) {
        super(props);
        console.log(props);
    }

axios请求被触发,我在控制台中获得了正确的数据。但这并没有传递给我的组件。 希望有人知道怎么了并能帮助我

已解决: 谢谢,我尝试了一下,可以解决问题。我得到了传递的数据,但是在更新之前调用了console.log(),所以我得到了旧数据。再次THX

2 个答案:

答案 0 :(得分:0)

您的代码看起来不错。您可以在下面以不同的api为例查看相同的代码

class Auftrag extends Component {
        state = {
            auftraege: "Test",
        };
        getAuftraege = () => {
            axios
            .get("https://jsonplaceholder.typicode.com/posts/1")
            .then(e => this.setState({auftraege: e.data}))
        };
        componentDidMount() {
            this.getAuftraege();
        }
        render() {
            return (
                <>
                    <AuftragDisplay test={this.state.auftraege} ></AuftragDisplay>
                </>
            );
        }
    }
    const AuftragDisplay = ({test}) =><h2>Hi--->{test.title}</h2>

答案 1 :(得分:-1)

只需将状态放入Auftrag类的构造函数中,我就应该工作。