silderItem.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { defineComponent, ref, watch } from 'vue';
  2. import styles from '../index.module.less';
  3. import { NImage } from 'naive-ui';
  4. import radiusIcon from '../images/radiusIcon.png';
  5. export default defineComponent({
  6. emits: ['checkNavBar'],
  7. props: ['item'],
  8. name: 'layoutSilder',
  9. setup(props, { emit }) {
  10. const openNavBar = (item: any) => {
  11. emit('checkNavBar', item);
  12. };
  13. const myItem = ref(props.item);
  14. watch(
  15. () => props.item,
  16. val => {
  17. myItem.value = val;
  18. },
  19. {
  20. deep: true
  21. }
  22. );
  23. return () => (
  24. <>
  25. <div
  26. onClick={() => openNavBar(myItem.value)}
  27. class={[
  28. styles.silderItem,
  29. myItem.value.isActive ? styles.isActiveItem : ''
  30. ]}>
  31. <NImage
  32. width="26"
  33. height="26"
  34. src={
  35. myItem.value.isActive
  36. ? myItem.value.activeIcon
  37. : myItem.value.normalIcon
  38. }
  39. preview-disabled></NImage>
  40. <p>{myItem.value.name}</p>
  41. {myItem.value.isActive ? (
  42. <NImage src={radiusIcon} class={styles.radiusIcon}></NImage>
  43. ) : null}
  44. </div>
  45. </>
  46. );
  47. }
  48. });