React和web components是为了解决不同问题而创立的。web components为可重用组件提供了健壮的封装,而React提供了声明式的库来保持DOM和数据同步。这两点是互相补充的。作为一个开发者,你可以自由地在你的web components里使用React,或者在React里使用web components,或者两者同时使用。

很多人使用React而不使用web components,但是你也许想要试一试,特别是如果你在使用依靠web components开发的第三方UI组件。

在React里使用web components

class HelloMessage extends React.Component {
render() {
return <div>Hello <x-search>{this.props.name}</x-search>!</div>;
}
}

注意:

web components经常对实例暴露一个重要的接口,一个video web component也许会暴露play()和pause()函数。想要访问web component的接口,你将需要使用一个ref去与DOM节点直接交互。如果你使用第三方的web components,最好的解决方案就是写一个React组件来包裹web component。

web components发出的事件也许不能正确地在React渲染树里传递。你将需要手动附加上事件处理器去处理这些事件在你的React组件里。

有一个混淆就是web component使用class而不是className。

function BrickFlipbox() {
return (
<brick-flipbox class="demo">
<div>front</div>
<div>back</div>
</brick-flipbox>
);
}

在web component里使用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});

你也可以看看这个链接完整的web component例子

最新文章

  1. 关于css3的背景渐变
  2. [spring源码学习]三、IOC源码——自定义配置文件读取
  3. JavaScript 开发的45个经典技巧
  4. 性能测试知多少---系统架构分析 转自https://yq.aliyun.com/articles/35147?spm=5176.100239.blogcont24251.8.lS96At
  5. selenium-webdriver(python) (十四) -- webdriver原理
  6. LightOj1089(求点包含几个线段 + 线段树)
  7. spring随想
  8. SpringMVC日期参数自动绑定
  9. Solr4.6从数据库导数据的步骤
  10. TCP数据包结构
  11. 关于TCP/IP协议栈
  12. 【Android N_启示录】
  13. Emmet 简介
  14. EntityFramework Core笔记:入门(1)
  15. Maven 在新版eclipse报错的解决
  16. js动画 Css提供的运动 js提供的运动
  17. DBC格式解析(以文本形式打开)
  18. Xilinx原语学习之时钟资源相关原语
  19. Keras处理已保存模型中的自定义层(或其他自定义对象)
  20. 牛客多校第五场 F take

热门文章

  1. [PHP] 解决人人商城收银台不能上传图片问题
  2. Python练习:爬取图片
  3. 执行python解释器的两种方式
  4. VScode中运行python程序,使用Code Runner插件
  5. MySQL 压缩文件安装遇到的问题及解决方案
  6. cent OS 7查询IP
  7. 拒绝QQ空间-手把手教你美化博客
  8. 自制操作系统Antz(13) 显示图片
  9. Django 安装 创建项目
  10. Unix系统的启动