WebComponent에 하위 요소를 표시하는 방법
P粉514001887
2023-09-04 09:18:39
<p>React에 대한 종속성을 없애기 위해 React 구성 요소를 WebComponent로 다시 빌드하려고 합니다. </p>
<p>HTML에서 다음과 같은 WebComponent를 보고 싶습니다. </p>
<pre class="brush:php;toolbar:false;"><editable-h1>안녕하세요, 세계</editable-h1></pre>
<p>다음과 같아야 합니다.</p>
<pre class="brush:php;toolbar:false;"><span>
<h1>안녕하세요, 세상</h1>
<button onClick=this.onEdit>수정</button>
<p>수정 버튼을 클릭하면 다음과 같이 나타나기를 원합니다. </p>
<pre class="brush:php;toolbar:false;"><form>
<input type='text' value='Hello, world'></input>
<버튼 onClick=this.onSave>저장</button>
<p>저장 버튼을 클릭하면 API 호출을 통해 변경 사항이 데이터베이스에 저장되고 원래 렌더링으로 돌아갑니다(단, 텍스트는 이미 편집된 상태로). </p>
<p>저는 렌더링 전환과 API 호출을 처리할 수 있다고 생각하지만, 렌더링하기 위해 초기 WebComponent에서 하위 요소 텍스트 "Hello, world"를 가져오는 방법에 대해 혼란스럽습니다. </p>
에서 태그 열기<editable-h1>
上触发connectedCallback
이벤트그래서 여러분의
Hello World
의 innerHTML은 아직 구문 분석되지 않았습니다실행하기 전에 구문 분석이 완료될 때까지 기다리려면
을 사용하세요.setTimeout
참고: 모두 제공됩니다
parsedCallback
的工具和库都会在底层使用类似的技巧,使用requestAnimationFrame
或MutationObserver
(및 더 많은 코드 줄).한 줄
를 확인해 보세요. (물론 로딩과 파싱이 필요하고 이로 인해 종속성과 코드 복잡성도 증가하므로 전체적으로 시간이 더 걸립니다)setTimeout
是一个hack,或者你不想使用setTimeout
이 해킹이라고 생각하거나 를 사용하여 밀리초를 낭비하고 싶지 않다면 Andrea Giammarchi의 html-parsed-element 코드WC 전문가를 따라가면 이 토론이 계속됩니다. 하위 요소가 변경되거나 파싱이 완료된 후 실행될 콜백 함수가 필요합니다 https://github.com/WICG/webcomComponents/issues/809
모든 방법은 결국 같은 목표로 귀결됩니다: 이벤트 루프가 비어 있을 때까지 기다리세요
이벤트 루프란 무엇인가요? https://www.youtube.com/watch?v=8aGhZQkoFbQ