封装公共订阅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>
)
}