尝试使用早期api提取中的ID进行api提取

时间:2018-11-14 15:16:58

标签: wordpress reactjs rest api headless

因此,我试图找到与此有关的信息,但我感到非常困惑。 我正在使用react运行无头wordpress,并且有一个页面可以提取我的单个帖子并返回。

每个帖子(称为Tjanster的自定义帖子类型)都有一个acf字段,该字段与另一个自定义帖子类型(与该帖子相关联的人)相关。

现在,一切都可以用来获取帖子内容以及带有ID和子弹等的人员对象。但是我需要该“人员帖子类型”中的ACF内容。

我现在的想法是我从帖子中的人员对象获取ID,然后针对该ID直接向人员端点进行另一次api获取,这是正确的想法吗?

这是我通过(http://localhost:8080/wp-json/wp/v2/tjanster)中的acf.person [0] .id获得的json帖子

enter image description here

在这里,我得到的人的ID是68,然后我可以向http://localhost:8080/wp-json/wp/v2/person/68发出请求,该请求将返回具有正确acf信息的对象:

enter image description here

这就是我的tjanster.js(单页)现在的样子:

import Layout from "../components/Layout.js";
import React, { Component } from "react";
import fetch from "isomorphic-unfetch";
import Error from "next/error";
import PageWrapper from "../components/PageWrapper.js";
import Menu from "../components/Menu.js";
import { Config } from "../config.js";

class Tjanster extends Component {
    static async getInitialProps(context) {
        const { slug, apiRoute } = context.query;

        const res = await fetch(
            `${Config.apiUrl}/wp-json/postlight/v1/${apiRoute}?slug=${slug}`
        );
        const tjanster = await res.json();

        return { tjanster };
    }


    render() {
        if (!this.props.tjanster.title) return <Error statusCode={404} />;

        let personId = this.props.tjanster.acf.person[0].ID;
        console.log(personId);

        return (
            <Layout>

                {this.props.tjanster.title.rendered}

            </Layout>
        );
    }
}

export default PageWrapper(Tjanster);

如您所见,我在渲染下将person对象的id保存为personId,但是我不完全确定下一步该怎么做?我以为可以使用${Config.apiUrl}/wp-json/wp/v2/person/${personId}在顶部进行另一次访存,但由于无法访问ID,因此无法正常工作。

任何想法将不胜感激!

1 个答案:

答案 0 :(得分:1)

您需要使用javascript Promise处理多个异步调用。只需将a链接起来,然后在首次获取后,您就可以在该ID可用时访问该ID。