React简单解释如何封装组件的demo
来源:互联网 发布:龙虾不会自然死亡 知乎 编辑:程序博客网 时间:2024/06/18 01:12
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Reactjs in 40 </title> <style media="screen"> .like-btn { font-size: 50px; } </style> </head> <body> <div class='wrapper'></div> </body> <script type="text/javascript"> /* Component */ class Component { constructor (props = {}) { this.props = props } setState (state) { const oldEl = this.el this.state = state this.el = this.renderDOM() if (this.onStateChange) this.onStateChange(oldEl, this.el) } renderDOM () { this.el = createDOMFromString(this.render()) if (this.onClick) { this.el.addEventListener('click', this.onClick.bind(this), false) } return this.el } } const createDOMFromString = (domString) => { const div = document.createElement('div') div.innerHTML = domString return div } const mount = (component, wrapper) => { wrapper.appendChild(component.renderDOM()) component.onStateChange = (oldEl, newEl) => { wrapper.insertBefore(newEl, oldEl) wrapper.removeChild(oldEl) } } /* ========================================= */ class LikeButton extends Component { constructor (props) { super(props) this.state = { isLiked: false } } onClick () { this.setState({ isLiked: !this.state.isLiked }) } render () { return ` <button class='like-btn' style="background-color: ${this.props.bgColor}"> <span class='like-text'> ${this.state.isLiked ? '取消' : '点赞'} </span> <span>��</span> </button> ` } } class RedBlueButton extends Component { constructor (props) { super(props) this.state = { color: 'red' } } onClick () { this.setState({ color: 'blue' }) } render () { return ` <div style='color: ${this.state.color};'>${this.state.color}</div> ` } } const wrapper = document.querySelector('.wrapper') mount(new LikeButton({ bgColor: 'red' }), wrapper) mount(new LikeButton(), wrapper) mount(new RedBlueButton(), wrapper) </script></html>
文章链接:http://huziketang.com/books/react/lesson2
阅读全文
0 0
- React简单解释如何封装组件的demo
- React组件嵌套--简单Demo
- React Native中组件的封装使用
- React Native 简单的组件
- react-native 组件demo
- React简单Demo
- 从零开始 React Native(6) 计时器案例(模块化_组件封装)有图有demo
- react-native 组件封装示例
- react-naitve picker组件封装
- react native 封装Touchable 组件
- react native 学习笔记----封装Android的原生组件
- React Js Simditor Textarea 富文本的组件封装
- OkHttp简单封装Demo
- 如何存储 React 组件的数据
- 如何优雅的设计 React 组件
- 如何写出漂亮的React组件
- 对commons fileupload组件的简单封装
- 对commons fileupload组件的简单封装
- nginx反向代理例子
- 构建ZooKeeper应用
- Angularjs轻松实现表格按指定列排序
- MySQL同时添加多条记录
- solr使用
- React简单解释如何封装组件的demo
- MySQL-基本数据类型
- 基于SSM的增删改查小系统
- C# Httpclient
- 设计模式分类
- hbase shell操作命令大全
- Log4j的日志输出级别和配置文件详解
- 将图片转换成svg格式
- ZooKeeper管理分布式环境中的数据