Front-end 개발/JAVASCRIPT 13

PC에서 가로 스크롤 터치로 움직일 수 있도록 구현 테스트

1. HTML 전체 #신작 #완결 #BL/GL #드라마 #판타지 #오피스 #캠퍼스 #호러/미스터리 #학원 #시대 #기타 #기타 #기타 2. CSS .tabs { display: flex; margin-top: 32px; overflow: hidden; flex-wrap: nowrap; /* 모바일일 경우 overflow-x: auto 추가 */ overflow-x: auto } 3. JAVASCRIPT left dragFlag = false left x, y, preX, prey const target = document.querySelector('.tabs') target.addEventListener('mousedown', function (e) { dragFlag = true x = target.s..

Vue directive - 버튼 외 다른 영역 클릭 시 함수 실행 테스트

Vue directive - 버튼 외 다른 영역 클릭 시 함수 실행 테스트 1. main.js 에 사용할 Vue directive 함수 추가 Vue.directive("click-outside", { bind: function (el, binding, vnode) { el.clickOutsideEvent = function (event) { if (!(el == event.target || el.contains(event.target))) { vnode.context[binding.expression](event); } }; document.body.addEventListener('click', el.clickOutsideEvent) }, unbind: function (el) { document.bod..

Vue directive - for문 끝난 후 callback 처리 관련 테스트

Vue directive - for문 끝난 후 callback 처리 관련 테스트 1. main.js 에 아래 Vue directive 추가 Vue.directive("for-callback", function(el, binding) { let element = binding.value; if (element.key == element.array.length - 1) if (typeof element.callback === "function") { element.callback(); } }); 2. 적용할 template for문에 directive 적용 사용 시 main.js 추가한 directive 명 v-for-callback 추가하여 key, array, callback 추가 callback 함수를..

파일 용량 단위 포맷 적용 테스트 (Bytes, GB, MB 등)

파일 용량 단위 포맷 적용 테스트 (Bytes, GB, MB 등) // bytes: bytes 표기할 숫자 데이터, decimals: 소수점 표기 자리수 정의 function formatBytes(bytes, decimals) { if (bytes == 0) return '0 Bytes'; var k = 1024, dm = decimals || 2, sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], // 단위 적용 i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; }

HTML문서 소스에서 원하는 HTML만 추출하는 기능 테스트 (DOMParser, parser.parseFromString 활용)

DOCTYPE 포함된 HTML문서에서 원하는 HTML만 추출하는 기능 테스트 ex) sun editor로 등록된 게시글의 원본 html문서에서 editor로 등록한 내용만 추출 function getEditorHtml(content) { if (!content) { return; } const parser = new DOMParser(); const doc = parser.parseFromString(content, 'text/html'); if (doc.querySelector('.sun-editor-editable')) { return doc.querySelector('.sun-editor-editable').innerHTML; } else { return content; } }

jotai 유틸 atomWithStorage 활용하여 session storage 적용 테스트

jotai 유틸 atomWithStorage 활용하여 session storage 적용 테스트 import { useAtom, atom } from 'jotai'; import { atomWithStorage, createJSONStorage } from 'jotai/utils'; // session storage 적용 const darkModeAtom = atomWithStorage( 'darkMode', false, createJSONStorage(() => sessionStorage), ); const [darkMode, setDarkMode] = useAtom(darkModeAtom); return ( Welcome to {darkMode ? 'dark' : 'light'} mode! setDar..

react-query 목록 추가 (POST) 및 수정 (PUT) 테스트

목록 추가 (POST) 및 수정 (PUT) 테스트 (참고한 페이지 : https://tanstack.com/query/v4/docs/react/examples/react/optimistic-updates-typescript) import styles from './styles.module.scss'; import React, { useState } from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import axios from 'axios'; export default function Study() { const queryClient = useQueryClient(); interface ..

react-query 목록 호출 (GET) 및 재 호출 테스트

react-query 목록 호출 (GET) 및 재 호출 테스트 (참고한 페이지 :https://tanstack.com/query/v4/docs/react/examples/react/pagination) import styles from './styles.module.scss'; import React, { useState } from 'react'; import { useQuery } from '@tanstack/react-query'; importaxiosfrom 'axios'; export default function Study() { const [imageNumber, setImageNumber] = useState(1); async function getCategorys(imageNumber =..

Delete `␍` prettier/prettier 에러 발생 시 eslintrc.json 수정

Delete `␍` prettier/prettier 에러 발생 시 eslintrc.json 의 rules 에 prettier/prettier 부분 "prettier/prettier": ["error", { "endOfLine": "auto" }] 로 변경 { ... "rules": { "prettier/prettier": ["error", { "endOfLine": "auto" }], // 해당 부분 수정 "react/react-in-jsx-scope": "off", "react/jsx-filename-extension": [1, { "extensions": [".ts", ".tsx"] }], "react/prop-types": "off" } }

반응형