오해하지 마세요. 저는 웹 구성 요소 API의 기본값에 반대하는 것이 없습니다. 내가 그들과 관련된 문제는 그들이 신뢰할 수 없다는 것입니다.
문제
API에 사용 가능한 옵션 목록을 제공하는 일반적인 접근 방식은 TypeScript의 untion 유형을 사용하는 것입니다.
/** The display variant for the button */ @property({reflect: true}) variant: 'default' | 'solid' | 'ghost' = 'default';
다음은 변형이 작동하도록 하는 몇 가지 기본 CSS입니다.
:host { --accent-color: #0265dc; } button { cursor: pointer; padding: 0.5rem; } :host([variant='default']) button { border: solid 1px var(--accent-color); background-color: white; color: var(--accent-color); } :host([variant='solid']) button { border: solid 1px var(--accent-color); background-color: var(--accent-color); color: white; } :host([variant='ghost']) button { border: solid 1px transparent; background-color: transparent; color: var(--accent-color); }
참고: 코드 예제에서는 Lit을 사용하고 있지만 여기서 설명하는 원칙은 다른 라이브러리 및 프레임워크에도 쉽게 적용할 수 있습니다.
문제는 맞춤 요소/웹 구성 요소를 어디에서나 사용할 수 있다는 것입니다. 문자열로 DOM에 삽입할 수 있고, PHP와 같은 서버측 언어로 삽입할 수 있으며, JavaScript의 createElement 함수 또는 표준 HTML로도 생성할 수 있습니다. 내가 얻은 것은 사용자 정의 요소 속성이 정확하게 설정되도록 보장하는 "유형 안전" 방법이 항상 있는 것은 아니라는 것입니다. 이 때문에 당사 컴포넌트 라이브러리의 PR 체크리스트 항목 중 하나는 다음과 같습니다.
✅ 속성과 속성은 설정, 해제, 잘못 설정된 경우에도 작동합니다.
API 테스트
이러한 지침에 따라 위의 API 설정을 테스트해 보겠습니다.
- 세트 - 모든 것이 좋아 보입니다.
<my-button variant="default">Default Button</my-button> <my-button variant="solid">Solid Button</my-button> <my-button variant="ghost">My Button</my-button>
- 설정되지 않음
- 속성을 설정하지 않아도 기본값이 있고 설정 시 요소에 속성을 반영하도록 구성되어 있으므로 잘 작동합니다.
- variant 속성을 정의되지 않음으로 설정하면 스타일이 손상됩니다.
<!-- No attribute set --> <my-button>No Attribute Button</my-button> <!-- JSX example --> <my-button variant="{undefined}">Unset Button</my-button>
- 잘못 설정 - 변형 속성을 "쓰레기"로 설정하면 작동이 중단됩니다.
<my-button variant="rubbish">Rubbish Button</my-button>
여기에서 이 예를 테스트할 수 있습니다.
API 수정
이 문제를 해결하는 가장 쉬운 방법은 버튼 요소 스타일을 기본 스타일과 일치시키는 것입니다.
button { border: solid 1px var(--accent-color); background-color: white; color: var(--accent-color); cursor: pointer; padding: 0.5rem; }
이제 기본 변형 코드를 제거할 수 있습니다.
/* We can remove this */ :host([variant='default']) button { border: solid 1px var(--accent-color); background-color: white; color: var(--accent-color); }
혼란을 피하기 위해 스타일을 그대로 두고 댓글을 추가할 수 있습니다.
/* Styles for this variant are under the `button` element */ :host([variant='default']) { }
또한 TypeScript API를 업데이트하여 선택 사항으로 만들고 기본값을 제거하겠습니다.
/** The display variant for the button */ @property({ reflect: true }) variant?: 'default' | 'solid' | 'ghost';
이제 값이 설정되거나 설정되지 않거나 잘못 설정된 경우 요소가 일관되게 작동합니다!
여기에서 최종 코드를 볼 수 있습니다:
결론
기본값에 대한 종속성을 제거하면 더욱 탄력적인 웹 구성 요소 API를 만들 수 있습니다. 구성 요소가 제대로 작동하기 위해 기본값이 있어야 하는 경우 이 문서를 확인하여 일관되게 작동하는 웹 구성 요소를 만드세요.
위 내용은 웹 구성 요소 스타일 지정에 기본 속성 값을 사용하지 마십시오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

React Ecosystem은 모두 드래그 앤 드롭의 상호 작용에 중점을 둔 많은 라이브러리를 제공합니다. 우리는 React-dnd, React-beautiful-dnd를 가지고 있습니다.

나는 자주 배경 클립을 사용한다고 말할 수 없습니다. I ' D WART IT IT는 일상적인 CSS 작업에서 거의 사용되지 않았습니다. 그러나 나는 Stefan Judis의 게시물에서 그것을 상기시켰다.

requestAnimationFrame을 사용하여 애니메이션은 쉬워야하지만 React의 문서를 철저히 읽지 않으면 몇 가지 문제가 발생할 수 있습니다.

아마도이를 사용자에게 제공하는 가장 쉬운 방법은 요소의 ID를 대상으로하는 링크 일 것입니다. 그래서 ...처럼 ...

들어보세요, 나는 GraphQL 전문가가 아니지만 함께 일하는 것을 좋아합니다. 프론트 엔드 개발자로서 데이터를 노출시키는 방법은 꽤 멋지다. 메뉴와 같습니다

이번 주에 타이포그래피를 검사하기위한 편리한 북마크 인 Roundup, JavaScript 모듈과 Facebook의 Facebook 등을 어떻게 가져 오는지 땜질하기 위해 대기하는 편리한 북마크 인 Roundup과 Facebook의


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구
