我想最初从 api 加载第一个元素,但在更改其他用户数据后,组件返回到第一个元素数据

i want to load first element from api initially , but after making change to other user data the component goes back to first element data

//这里我想最初显示第一个数组数据,但不是在每次状态更改或 api 调用时显示

useEffect(() => {
    data?.delivery_boys?.map((d, index) => {
      if (index === 0) {
        setDeliveryBoy(d);
      }
    });
    return () => {
      data;
    };
  }, [data]);

//这里我再次改变数据和设置状态

 const handleOnSubmit = () => {
    setAssignCustomerId(assignCustomerId);
    console.log(assignCustomerId, "assgnied ");
    toggleModal();
    const id = typeof deliveryBoy !== "undefined" && deliveryBoy.id;
    const params = { deliveryBoyId: id, assignCustomerId };
    assignCustomerMutation.mutate(params, {
      onSuccess: (data) => {
        setDeliveryBoy(data?.delivery_boy);
        queryClient.setQueryData([GET_DELIVERY_BOY_LIST.name, params], data);
        queryClient.invalidateQueries([GET_DELIVERY_BOY_LIST.name]);
      },
    });
  };

我认为 useEffect 中你想要的行是仅在没有 deliveryBoy 的情况下设置它。

useEffect(() => {
    if (!deliveryBoy){
      // your code
    }

  }, [data]);

但是在 useEffect 中,我认为你也不需要映射所有项目,所以你可以这样重写它:

useEffect(() => {
    if (!deliveryBoy) {
      setDeliveryBoy(data?.delivery_boys?.[0])  
    }
  }, [data]);