微信踩坑(2020-12-28)

155 阅读1分钟

封装公共订阅button 遇到验证权限 只会触发两次 再点击不再触发

import React, { useEffect, useState } from "react";
import Taro from "@tarojs/taro";
import { View } from "@tarojs/components";
import styles from "./index.module.scss";
import { getBrandSubscribe } from "./index.model";
import PageBottom from "@/src/components/pageCommon/PageBottom";
import EventBus from "@/weapp/utils/eventBus";
import ConfirmPop from "@/src/components/common/confirmPop";

interface I_Props {
  is_subscribe: number;
  id: number;
  onConfirm?: Function;
}

export default function SubscriptionButton({
  is_subscribe,
  id,
  onConfirm,
}: I_Props) {
  const [pis_subscribe, set_pis_subscribe] = useState(is_subscribe);
  let [count, set_count] = useState(0);
  const [visible, set_visible] = useState(false);
  useEffect(() => {
    set_pis_subscribe(is_subscribe);
  }, [is_subscribe]);

  // 点击订阅/取消订阅该品牌
  const doBrandSubscribe = () => {
    console.log(pis_subscribe, "pis_subscribe");
    getBrandSubscribe({ id: id, type: pis_subscribe === 0 ? 1 : 0 }).then(
      (rep) => {
        if (rep && rep.data) {
          set_pis_subscribe(pis_subscribe === 0 ? 1 : 0);
          Taro.showToast({
            title: rep.msg,
            icon: "none",
            duration: 2000,
          });
        }
      }
    );
  };
  return (
    <View className={styles.subscriptionButton}>
      <View
        onClick={() => {
          EventBus.emit("showAutho", {
            canClose: true,
            onThorization: () => {
              console.log("subscriptionButton", pis_subscribe);

              if (pis_subscribe === 1) {
                set_visible(true);

                return;
              } else {
                doBrandSubscribe();
              }
              EventBus.emit("closeAutho");
            },
            onClose: () => {
              EventBus.emit("closeAutho");
            },
          });
        }}
        className={styles.subscribe}
      >
        {pis_subscribe === 0 ? "+ 订阅" : "已订阅"}
      </View>
      <ConfirmPop
        visible={visible}
        title="是否取消订阅"
        btns={{
          cancelText: "去意已决",
          showCancel: true,
          confirmText: "我再想想",
        }}
        content="您将收不到品牌的最新动态和信息"
        onClose={() => {
          set_visible(false);
          doBrandSubscribe();
        }}
        onConfirm={() => {
          set_visible(false);
        }}
      />
      <PageBottom />
    </View>
  );
}