getFoodTemplate(subscriptionDuration:any, menuId:any) {
const request = createAxiosInstance(this.token);
runInAction(() => (this.loading.getFoodTemplate = true));
request`enter code here`
.get(
`${BaseDirectories.API_BASE_URL}/api/v1/food-subscription-templates/all-food-subscription-templates?subscriptionDuration=${subscriptionDuration}&menuId=${menuId}`,
)
.then((res) => {
runInAction(() => (this.loading.getFoodTemplate = false));
this.setFoodTemplate(res.data.data);
})
.catch((error) => {
runInAction(() => (this.loading.getFoodTemplate = false));
return ErrorHandler(error);
});
}
字符串
因此,我有这样一段代码,其中我将subscriptionDuration和menuId作为查询参数传递给端点
const [subscriptionDuration, setSubscriptionDuration] = useState('Weekly');
型
然后我在这里保存subscriptionDuration:
useEffect(() => {
console.log('subscriptionDuration', subscriptionDuration)
subscriptionStore?.getFoodTemplate(subscriptionDuration, menu);
kitchenStore?.getKitchen();
menuStore?.getMenu();
kitchenId && foodStore?.getFood(kitchenId);
}, [subscriptionStore, subscriptionDuration, menu, kitchenStore, foodStore, kitchenId]);
型
因此,我像上面那样调用API,在我的浏览器devtool中的网络选项卡中,调用返回两次,其中一次调用将subscriptionDuration显示为“Weekly”,而另一次将其显示为“undefined”,如下所示:
的数据
的
因此,由于调用显示为undefined,我用于呈现屏幕的响应显示为null。查看我的useEffect
,您将看到我试图在控制台中检查subscriptionDuration
的值,它在控制台中返回“weekly”和“undefined”,这两个值都在同一行代码中。我希望得到任何形式的帮助。
1条答案
按热度按时间os8fio9y1#
所以我修复了这个问题。我已经在代码的另一个地方设置了订阅持续时间来处理其他事情,所以我猜它们相互影响,因为我试图将相同的值传递给端点。所以我所做的是用另一个选择输入为订阅持续时间创建另一个usestate,并将该值传递给端点。我不太明白发生了什么,我真的不能给予详细的说明。我的代码现在可以用了。
所以就像我之前说的,我真的不太明白为什么初始的subscriptionDuration不适用于API,但我创建了一个新的选择输入,可以在下面看到-
字符串
我还创建了一个新的usestate变量,并将新的subDuration设置为select的值,然后将其传递给API,这很有效。我不知道我是否可以通过调整一些东西来使用以前的subscriptionDuration,但这个新的对我很有效