Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 参数在react native中从一个api传递到另一个api_React Native_Parameter Passing_Axios - Fatal编程技术网

React native 参数在react native中从一个api传递到另一个api

React native 参数在react native中从一个api传递到另一个api,react-native,parameter-passing,axios,React Native,Parameter Passing,Axios,我想将一个参数值从一个API请求传递到第二个API请求,以便第二个API相应地显示结果:这是我的函数组件willmount: componentWillMount() { axios.post('https://APISITE/api/Auth/AuthorizeByApplication?applicationId=b72fc47a-ef82-4cb3-8179-2113f09c50ff&applicationSecret=e727f554-7d27-4fd2-bcaf-dad3e

我想将一个参数值从一个API请求传递到第二个API请求,以便第二个API相应地显示结果:这是我的函数
组件willmount

componentWillMount() {
  axios.post('https://APISITE/api/Auth/AuthorizeByApplication?applicationId=b72fc47a-ef82-4cb3-8179-2113f09c50ff&applicationSecret=e727f554-7d27-4fd2-bcaf-dad3e0079821&token=cd431b31abd667bbb1e947be42077e9d')
  .then((response) => { console.log(response.data); });

      axios.get('https://APISITE//api/Stock/GetStockItems',

        { 
            params: {
                keyWord: 454534534543,
                locationId: '',
                entriesPerPage: 100000,
                pageNumber: 1,
                excludeComposites: true,
                //add other params
            },
            headers: 
            { Authorization: 'asdfasdsfdfdfdfsfsdxxx' 
            }
        //}).then((response) => { console.log(response.data); }); 
         }).then((response) => this.setState({ products: response.data }));

         axios.get('https://APISITE//api/Stock/GetStockLevel', {  

            params: { 
                stockItemId: '2f80b45c-85ff-449b-9ad6-ffcc4bb640dd',
                 },
                   headers: 
                   { Authorization: 'asdfasdsfdfdfdfsfsdxxx'
                   }       
      //  }).then(response => console.log(response));
        }).then((response) => this.setState({ racks: response.data }));
}
stockItemId中的值作为静态值传递,结果正确显示在控制台中。如何从第一个api请求动态获取stockItemId的值

编辑:下面是直接在api中传递stockItemId和从第一个api获取的数据结果截图

  • 从第一个api获取:
    stockItemId:stockItems.data.stockItemId
  • 直接传递stockItemId屏幕截图的值-
    stockItemId:'2f80b45c-85ff-449b-9ad6-ffcc4bb640dd'

首先不要使用
组件将挂载
组件生命周期方法设置组件状态或调用任何api请求用于这些目的使用
组件挂载
进行更多读取哪个生命周期用于哪个目的读取其次只需在第一个api请求响应中添加第二个api请求,并使用不同的名称响应名称,如下所示:

componentDidMount() {
    axios.post('https://APISITE/api/Auth/AuthorizeByApplication?
        applicationId='app id'&applicationSecret='app secret'&token='app token'')
    .then((responseFirst) => { 
        axios.get('https://APISITE//api/Stock/GetStockItems', { 
            params: {
                keyWord: 5055967419551,
                locationId: '',
                entriesPerPage: 100000,
                pageNumber: 1,
                excludeComposites: true,
            },
            headers: { 
                Authorization: '0f32ae0d-c4e0-4aca-8367-0af88213d668' 
            }
        }).then((responseSecond) => this.setState({ products: responseSecond.data }));

            axios.get('https://APISITE//api/Stock/GetStockLevel', {  
                params: { 
                    stockItemId: responseFirst.data.stockItemId,
                },
                headers: { 
                    Authorization: '0f32ae0d-c4e0-4aca-8367-0af88213d668'
                }       
            }).then((responseThird) => this.setState({ racks: responseThird.data }));
    });
}

如果您正在使用redux,请阅读并了解如何处理它。

您需要处理
然后
函数中的响应数据。
请注意,每个请求的响应被传递到下面的
中,然后是可以轻松使用的

componentWillMount() {
  axios
    .post('https://APISITE/api/Auth/AuthorizeByApplication?applicationId='app id'&applicationSecret='app secret'&token='app token'')
    .then((authData) => {
      console.log(authData.data);
      return axios.get('https://APISITE//api/Stock/GetStockItems', {
        params: {
          keyWord: 5055967419551,
          locationId: '',
          entriesPerPage: 100000,
          pageNumber: 1,
          excludeComposites: true,
        },
        headers: {
          Authorization: '0f32ae0d-c4e0-4aca-8367-0af88213d668'
        }
      })
    })
    .then((stockItems) => {
      this.setState({ products: stockItems.data })
      return axios.get('https://APISITE//api/Stock/GetStockLevel', {
        params: {
          stockItemId: stockItems.data.stockItemId,
        },
        headers: {
          Authorization: '0f32ae0d-c4e0-4aca-8367-0af88213d668'
        }
      })
    })
    .then((stockLevel) =>
      this.setState({ racks: stockLevel.data })
    )
}

(此代码未经测试!)

其显示错误消息:“未定义响应”该怎么办?请指定您在哪一行收到此错误?我给了你一般化的答案,但变量和响应处理你必须这样做。第二个请求应该在第一个请求的'then'函数中。这应该可以解决您收到的错误消息。在“stockItemId:response.data.stockItemId,”@RobWalker…我也尝试了,但没有成功。相同的错误我尝试了这种方法,但stockItemId没有出现:stockItemId:stockItems.data.stockItemId,请提出其他建议。@Sharma您是否已尝试注销stockItems实际包含的数据,以防您查找的数据在您预期的位置不存在?我不明白。关于stockItemId,如果我直接将值传递为****stockItemId:'2f80b45c-85ff-449b-9ad6-ffcc4bb640dd'****而不是****stockItemId:stockItems.data.stockItemId,****,那么它会显示出来result@Sharma没有看到你的数据,我无法告诉你这里出了什么问题。查看console.log的一些文档,了解如何调试API请求以正确检查数据(或学习使用chrome网络检查器)。我编辑了这篇文章,您可以看到chrome控制台。我希望它能很好地解释我的问题。等一下:)谢谢