React native 参数在react native中从一个api传递到另一个api
我想将一个参数值从一个API请求传递到第二个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
组件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控制台。我希望它能很好地解释我的问题。等一下:)谢谢