ReactWeb元件
Web元件
從概念上說,React 和 Web元件 分別用於解決不同的問題。Web元件提供了強大的封裝特性來支援其可重複使用性,而React提供了一系列宣告性(declarative)介面保證Dom結構和資料同步。但是某些時候這2個目標是互補的。對於開發人員來說將React用於Web元件、或將Web元件用於React、或2者皆有並非難事。
雖然大部分使用React的開發人員並不需要使用Web元件,但是在某些情況,特別是引入了某些第三方庫,還是需要使用到相關機制。
在React中使用Web元件
class HelloMessage extends React.Component {
render() {
return <div>Hello <x-search>{this.props.name}</x-search>!</div>;
}
}
Web元件常會暴露一些必要的API介面,例如一個 video Web元件可能會暴露
play()
和pause()
方法。為了獲取Web元件暴露的這些API介面,需要在React編碼使用Refs特性來直接獲取真實的Dom節點。如果引入第三方的Web元件,最好的解決方案使用一個React元件來包裝引入的Web元件並最終作為一個React元件來使用。由第三方Web元件觸發的事件也許並不能通過React的渲染樹傳遞,此時需要在元件中去手工的觸發事件。
一個經常導致混亂的地方是,Web元件使用的是“class”而React使用的是“className”,例如:
function BrickFlipbox() {
return (
<brick-flipbox class="demo">
<div>front</div>
<div>back</div>
</brick-flipbox>
);
}
在Web元件中使用React
const proto = Object.create(HTMLElement.prototype, {
attachedCallback: {
value: function() {
const mountPoint = document.createElement(`span`);
this.createShadowRoot().appendChild(mountPoint);
const name = this.getAttribute(`name`);
const url = `https://www.google.com/search?q=` + encodeURIComponent(name);
ReactDOM.render(<a href={url}>{name}</a>, mountPoint);
}
}
});
document.registerElement(`x-search`, {prototype: proto});
React整合Jquery這一類直接操作Dom的技術
React在發生真實Dom渲染之前都會先產生與之對應的虛擬Dom結構,然後再“合適”的時候將虛擬Dom的內容渲染到真實Dom上,完成渲染之後componentDidMount會被呼叫。Jquery這一類真實Dom的操作技術投入實際使用時最好在componentDidMount中使用,然後保證這個元件不會的虛擬Dom不發生任何改變。
相關文章
- Vue元件、元件傳值和元件插槽Vue元件
- Angular元件——父元件呼叫子元件方法Angular元件
- React 快速上手 - 06 元件設計 容器元件、展示元件、操作元件React元件
- angular自定義元件-UI元件篇-switch元件Angular元件UI
- 受控元件與非受控元件元件
- rest認證元件,許可權元件,頻率元件,url註冊器,響應器元件,分頁器元件REST元件
- vue元件巢狀之 - 父元件向子元件傳值Vue元件巢狀
- 元件元件
- Angular元件-檔案上傳元件Angular元件
- react篇章-React 元件-複合元件React元件
- Flutter元件學習(一)—— Text元件Flutter元件
- 翻譯:展示元件和容器元件元件
- React受控元件和非受控元件React元件
- Angular元件——元件生命週期(二)Angular元件
- 聊聊前端 UI 元件:元件設計前端UI元件
- 聊聊前端 UI 元件:元件體系前端UI元件
- Angular元件——元件生命週期(一)Angular元件
- 父元件向子元件傳值元件
- 元件emit資料至父元件元件MIT
- 子元件向父元件傳參元件
- react父子元件,兄弟元件,爺爺到孫子元件筆記React元件筆記
- 子元件給父元件傳資料元件
- vue中子元件傳遞父元件$emitVue元件MIT
- Android元件化專題 - 元件化配置Android元件化
- Vue中父子元件通訊——元件todolistVue元件
- React之受控元件和非受控元件React元件
- React 之受控元件和非受控元件React元件
- Vue 動態元件 & 非同步元件原理Vue元件非同步
- 自定義元件-元件的建立和引用元件
- 自定義元件-元件的生命週期元件
- 讓Vue元件變成Powerful的元件Vue元件
- Vue遞迴元件+Vuex開發樹形元件Tree--遞迴元件Vue遞迴元件
- react高階元件小demo-受控元件轉換成非受控元件React元件
- React 元件建立方法及父元件向子元件傳參(基礎)React元件
- Vue元件Vue元件
- Form元件ORM元件
- forms元件ORM元件
- Flutter元件Flutter元件