LoginTab.vue 835 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <script>
  2. import { Tabs } from "ant-design-vue";
  3. import LoginContext from "./LoginContext";
  4. const { TabPane } = Tabs;
  5. const generateId = (() => {
  6. let i = 0;
  7. return (prefix = "") => {
  8. i += 1;
  9. return `${prefix}${i}`;
  10. };
  11. })();
  12. export default {
  13. typeName: "LoginTab",
  14. props: {
  15. active: Boolean,
  16. destroyInactiveTabPane: Boolean,
  17. rootPrefixCls: String,
  18. tab: String
  19. },
  20. data() {
  21. return {
  22. uniqueId: generateId("login-tab-")
  23. };
  24. },
  25. mounted() {
  26. this.tabUtil.addTab(this.uniqueId);
  27. },
  28. render() {
  29. const props = { props: { ...this.$props } };
  30. return (
  31. <LoginContext.Consumer>
  32. {value => {
  33. this.tabUtil = value.tabUtil;
  34. return <TabPane {...props}>{this.$slots.default}</TabPane>;
  35. }}
  36. </LoginContext.Consumer>
  37. );
  38. }
  39. };
  40. </script>