index.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { barrageSetConfigAPI } from "@/store/action/B4Barrage";
  2. import { MessageFu } from "@/utils/message";
  3. import { Button, Modal, Switch } from "antd";
  4. import React, { useCallback, useEffect, useState } from "react";
  5. import styles from "./index.module.scss";
  6. type Props = {
  7. closeMoalFu: () => void;
  8. upBarrageFu: () => void;
  9. barrageValue: boolean;
  10. };
  11. function BarrageSet({ closeMoalFu, barrageValue, upBarrageFu }: Props) {
  12. const [value, setValue] = useState(false);
  13. useEffect(() => {
  14. setValue(barrageValue);
  15. }, [barrageValue]);
  16. const isEnabledClickFu = useCallback(
  17. async (val: boolean) => {
  18. const obj = {
  19. content: JSON.stringify({ value: val }),
  20. };
  21. const res = await barrageSetConfigAPI(obj);
  22. if (res.code === 0) {
  23. MessageFu.success("操作成功!");
  24. setValue(val);
  25. upBarrageFu();
  26. }
  27. },
  28. [upBarrageFu]
  29. );
  30. return (
  31. <Modal
  32. wrapClassName={styles.BarrageSet}
  33. destroyOnClose
  34. open={true}
  35. title="弹幕功能设置"
  36. footer={
  37. [] // 设置footer为空,去掉 取消 确定默认按钮
  38. }
  39. >
  40. <div className="main">
  41. <div className="row">
  42. <div className="tit">开关:</div>
  43. <Switch
  44. checkedChildren="开启"
  45. unCheckedChildren="关闭"
  46. checked={value}
  47. onChange={(val) => isEnabledClickFu(val)}
  48. />
  49. <div className="txtTit">
  50. 关闭后,将屏蔽场馆所有弹幕,并禁止发布弹幕留言
  51. </div>
  52. </div>
  53. <br />
  54. <div className="button">
  55. <Button onClick={closeMoalFu}>关闭</Button>
  56. </div>
  57. </div>
  58. </Modal>
  59. );
  60. }
  61. const MemoBarrageSet = React.memo(BarrageSet);
  62. export default MemoBarrageSet;