我正在尝试支持与React.Children相同类型的东西
我的代码看起来像
const elem = document.getElementById("profile")
const render = hyperHTML.bind(elem);
const name = elem.textContent
render`<b>Hi ${name}</b>`
所以API看起来像
<div id="profile">alax</div> <div id="profile"><b>Hi alax</b></div>
我正在使用MutationObserver重新呈现内容更改
但是如果内容改变了。hyperHTML 说它渲染到正确的元素.. 但元素保持其 innerHtml(无更新)
我可以看到已删除,然后设置了内容,但再次<!--_hyper: -2001947635;-->
设置渲染和hyperHTML.bind无济于事
任何想法都会很棒!谢谢
更新
解决上述问题的方法是调用,hyperHTML.bind``
然后使用 hyperHTML 进行正常渲染即可
上下文- 我正在使用 hyperHTML 创建自定义元素库(超元素)
我的用例:我在一个混合技术项目中工作(有些人使用 jQuery)
旁注,关于为什么。我想支持部分模板之类的东西
部分模板示例:
<user-list data="[{name:'ann',url:''},{name:'bob',url:''}]">
<div><a href="{#url}">{#name}</a></div>
</user-list>
输出:
<user-list data="[{name:'ann',url:''},{name:'bob',url:''}]">
<div><a href="">ann</a></div>
<div><a href="">bob</a></div>
</user-list>
这是在您控制的元素中设置自定义内容的一种用途
目前我通过 3 方工作/重新渲染设置内容
https://jsfiddle.net/k25e6ufv/16/
我现在的问题是:它正在渲染另一个自定义元素并将传递内容传递给子元素
看起来 hyperHTML 正在将子元素的内容设置在元素的前面,并在不设置内容的情况下创建元素
向下滚动到源代码的底部以查看实现!
https://jsfiddle.net/k25e6ufv/14/
Rending crazy-cats :
Html`
xxx: ${this.wrapedContent} zzzz
`
电流输出:
wrapedContent: ppp time:11:35:48 ~ crazy-cats: **Party 11:35:48** xxx: zzzz
<crazy-cats>Party 11:37:21 xxx: <!--_hyper: -362006176;--> zzzz </crazy-cats>
期望的输出:
wrapedContent: ppp time:11:35:48 ~ crazy-cats: xxx: **Party 11:35:48** zzzz
<crazy-cats> xxx: Party 11:37:21 zzzz </crazy-cats>