reactjs 传递到端点的变量同时返回值和取消定义

pdsfdshx  于 12个月前  发布在  React
关注(0)|答案(1)|浏览(169)
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”,这两个值都在同一行代码中。我希望得到任何形式的帮助。

os8fio9y

os8fio9y1#

所以我修复了这个问题。我已经在代码的另一个地方设置了订阅持续时间来处理其他事情,所以我猜它们相互影响,因为我试图将相同的值传递给端点。所以我所做的是用另一个选择输入为订阅持续时间创建另一个usestate,并将该值传递给端点。我不太明白发生了什么,我真的不能给予详细的说明。我的代码现在可以用了。
所以就像我之前说的,我真的不太明白为什么初始的subscriptionDuration不适用于API,但我创建了一个新的选择输入,可以在下面看到-

<Select
      onChange={(e) => setSubDuration(e.target.value)}
      value={subDuration}
    >
      <option value="Weekly">Weekly</option>
      <option value="Monthly">Monthly</option>
    </Select>

字符串
我还创建了一个新的usestate变量,并将新的subDuration设置为select的值,然后将其传递给API,这很有效。我不知道我是否可以通过调整一些东西来使用以前的subscriptionDuration,但这个新的对我很有效

相关问题