Javascript 我可以将动态值传递给ES6的模板文本吗?

Javascript 我可以将动态值传递给ES6的模板文本吗?,javascript,reactjs,jsx,axios,Javascript,Reactjs,Jsx,Axios,当我点击该API调用时,url显示: 本地主机:9000/api/未定义/未定义/学校/ 我试图将从第一个API调用获得的数据作为参数传递给第二个API?是否不允许通过模板文本传递动态数据?由于获取/api/cities数据是异步操作,因此需要等待结果。只是为了证明概念: getSelectedCityId() { let citiName citiId; axiosInstance .get("/api/cities") .then(re

当我点击该API调用时,url显示:

本地主机:9000/api/未定义/未定义/学校/

我试图将从第一个API调用获得的数据作为参数传递给第二个API?是否不允许通过模板文本传递动态数据?

由于获取/api/cities数据是异步操作,因此需要等待结果。只是为了证明概念:

getSelectedCityId() {
    let citiName
    citiId;
    axiosInstance
        .get("/api/cities")
        .then(response => {
            if (response.status === 200 && response.data) {
                citiName = this.state.city;
                citiId = this.state.city.city_id;
            }
        })
        .catch(error => {});

    let url = `/api/${citiName}/${citiId}/schools/`;
    axiosInstance
        .get(url)
        .then(response => {

        })
        .catch(error => {
            console.log(error);
        });
}
由于获取/api/cities数据是异步操作,因此需要等待结果。只是为了证明概念:

getSelectedCityId() {
    let citiName
    citiId;
    axiosInstance
        .get("/api/cities")
        .then(response => {
            if (response.status === 200 && response.data) {
                citiName = this.state.city;
                citiId = this.state.city.city_id;
            }
        })
        .catch(error => {});

    let url = `/api/${citiName}/${citiId}/schools/`;
    axiosInstance
        .get(url)
        .then(response => {

        })
        .catch(error => {
            console.log(error);
        });
}
这将确保第二次AXIOS调用在第一次调用完成且有有效URL可传递之前不会进行


这将确保第二个AXIOS调用在第一个调用完成并且有有效的URL要传递之前不会进行。

您可以这样做,但在这种情况下,它不起作用,因为您试图设置作为异步进程一部分的变量。您应该通读.PS-在这种情况下,如果@安迪,我有点明白了!谢谢你的投入!您可以,但在本例中,它不起作用,因为您试图设置作为异步进程一部分的变量。您应该通读.PS-在这种情况下,如果@安迪,我有点明白了!谢谢你的投入!这是一个比我更简洁的答案。我将向你们屈服@Joshuauunderwood同意。不过,我喜欢分解。将代码分解成更小的函数更易于阅读和调试。不管怎样,我还是选择了你的解决方案!这是一个比我更简洁的答案。我将向你们屈服@Joshuauunderwood同意。不过,我喜欢分解。将代码分解成更小的函数更易于阅读和调试。不管怎样,我还是选择了你的解决方案!
getSelectedCityId() {
    let citiName
    citiId;
    axiosInstance
        .get("/api/cities")
        .then(response => {
            if (response.status === 200 && response.data) {
                citiName = this.state.city;
                citiId = this.state.city.city_id;
                this.getSelectedCityIdStepTwo(`/api/${citiName}/${citiId}/schools/`);
            }
        })
        .catch(error => {});
}

getSelectedCityIdStepTwo(url) {
    axiosInstance
        .get(url)
        .then(response => {

        })
        .catch(error => {
            console.log(error);
        });
}