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例子

React文档(二十三)Web Components的更多相关文章

  1. React文档(十三)思考React

    在我们的看来,React是使用js创建大型快速网站应用的首要方法.它在Facebook和Instagram的使用已经为我们展现了它自己. React的一个很好的地方就在于当你创建应用的时候它使你思考如 ...

  2. ngrok首页、文档和下载 - Web服务安全通道 - 开源中国社区

    ngrok首页.文档和下载 - Web服务安全通道 - 开源中国社区      Web服务安全通道 ngrok 编辑/纠错    分享到     新浪微博腾讯微博    已用    +0    收藏 ...

  3. iis设置默认文档,提示web.config配置xml格式不正确

    网站上传后,配置默认文档,提示web.config配置xml格式不正确,几经尝试,发现是sqlserver密码中的“&”符号惹的祸,web.config文件中不能使用该字符.分享出来,大家遇到 ...

  4. 【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components

    原创至上,移步请戳:(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components 4.Interaction Components 本节涵盖了处 ...

  5. 【转】(四)unity4.6Ugui中文教程文档-------概要-UGUI Visual Components

    原创至上,移步请戳:(四)unity4.6Ugui中文教程文档-------概要-UGUI Visual Components 3.Visual Components 有新的组件和游戏对象已添加到uG ...

  6. React文档(二十四)高阶组件

    高阶组件(HOC)是React里的高级技术为了应对重用组件的逻辑.HOCs本质上不是React API的一部分.它是从React的组合性质中显露出来的模式. 具体来说,一个高阶组件就是一个获取一个组件 ...

  7. web开发规范文档二

    头部        header\hd 内容块      content\con\bd text txt title 尾部        footer 导航        nav\menu sub-n ...

  8. Web API 自动生成帮助文档并使用Web API Test Client 测试

    之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下. 先看一下生成的webapi文 ...

  9. react文档demo实现输入展示搜索结果列表

    文档页面地址:https://doc.react-china.org/docs/thinking-in-react.html 该文档只给了具体实现思路,下面是我实现的代码. 初学react,如果有写的 ...

随机推荐

  1. WebApi接口访问异常问题。尝试创建“testController”类型的控制器时出错。请确保控制器具有无参数公共构造函数

    本来运行的好好的webAPI 接口突然报了个 :“尝试创建“testController”类型的控制器时出错.请确保控制器具有无参数公共构造函数” 错误.耗了半宿最终解决了, 原因: api控制器中引 ...

  2. IT题库7-线程加锁

    转载:http://www.cnblogs.com/linjiqin/p/3208843.html 一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏.例如:两个线程T ...

  3. RSA 汇总

    最近工作中遇到了RSA,这个,以前只是粗略的看了一下,结果,实际使用的时候,各种眼花缭乱啊.现在整理一下RSA有哪些相关知识. 1. RSA算法本身.算法本身的内容实际上是在pkcs#1的标准里面说明 ...

  4. 阿里云服务器ECS的环境部署和安装

    1.进入产品 云服务 ECS 和 云空间选择, 我购买的是ECS,那么环境搭建都是需要自己动手实现的. 2. 选择创建一个实例 记得网络一定要选择 公用网络,主机地址选择选择国内. 3. 购买的时候 ...

  5. Django的安装和一些操作

    1.安装 (1) 命令行: pip install django==1.11.18 pip install django==1.11.18 -i 源 (2) pycharm setting —> ...

  6. ansible-2.1.0.0_module

    ansible --version ansible 2.1.0.0 config file = /home/onest/luoliyu/ceph-ansible/ansible.cfg configu ...

  7. JS对象格式化方法:pretty_format

    /* * 格式化 * */ var pretty_format = function (obj, indent) { if (obj === null) return 'null'; if (obj ...

  8. JavaWeb案例:登陆和注册

    mvc开发模式简介 M: Model模型 JavaBeanV:view视图 JSPC:Controller控制器 Servlet 其实就是JSP + Servlet + JavaBean上面的Java ...

  9. Codeforces Gym 101623A - 动态规划

    题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...

  10. C# 将对应的xml文档赋值给指定模型(对象)

    public static IList<T> XmlToEntityList<T>(string xml) where T : new()        {           ...