반응형
Vue 구성 요소 렌더 함수: 이스케이프되지 않은 html 엔티티 인쇄
HTML 엔티티를 빠져나와 일반 텍스트로 인쇄하지 않고 Vue 2에서 구성 요소를 렌더링하도록 하려면 어떻게 해야 하는가?그게 태그였다면 다른 사람을 둥지로 만들었을 거야createElement, 그러나 이것은 사실이 아니다.
Vue.component('my-component', {
render: function(createElement) {
return createElement('div', ' ')
}
})
new Vue({
el: '#app',
components: [
'my-component'
]
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.0/vue.min.js"></script>
<div id="app">
<my-component />
</div>
다음 두 번째 인수에 DOM 속성과 HTML 속성을 정의할 수 있다.createElement기능을 하다
문서: https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth
해결책:
Vue.component('my-component', {
render: function(createElement) {
return createElement('div', {
domProps: {
innerHTML: ' '
}
})
}
})
new Vue({
el: '#app',
components: [
'my-component'
]
})
console.log(document.getElementById('app').firstChild.innerHTML)
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<my-component></my-component>
</div>
주석 후 업데이트:
구성 요소를 다음과 같은 자녀로 채울 수 있다.
Vue.component('my-component', {
render: function(createElement) {
return createElement('div',
[
createElement('p', 'top tag'),
createElement('div', {
domProps: {
innerHTML: 'A B'
}
}),
createElement('p', 'bottom tag'),
]
)
}
})
new Vue({
el: '#app',
components: [
'my-component'
]
})
console.log(document.getElementById('app').firstChild.innerHTML)
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<my-component></my-component>
</div>
반응형
'programing' 카테고리의 다른 글
| ->>>오래된 연산자인가, 오타/오류인가? (0) | 2022.05.08 |
|---|---|
| 'in main;'이 유효한 C/C++ 프로그램인가? (0) | 2022.05.08 |
| gets 기능이 왜 그렇게 위험해서 사용하면 안 되는가? (0) | 2022.05.08 |
| Vuejs + Vuex Get 확인란 상태(체크됨) (0) | 2022.05.08 |
| JUnit를 사용하여 환경변수에 따라 코드를 테스트하는 방법? (0) | 2022.05.07 |