React组件协同使用
来源:互联网 发布:上海房多多端口销售 编辑:程序博客网 时间:2024/05/10 18:12
组件协同的本质是对组件的一种组织、管理方式。
1.组件嵌套
2.Mixin(混入,把一段代码混到组件中)
一、组件嵌套
本质是父子关系。
父组件 —(属性)—子组件
子组件—(事件处理函数(委托))—父组件
优点:
逻辑清晰:父子关系
代码模块化:同步开发
封装细节
缺点:
编写难度高:处理父子关系
无法掌握细节
实例代码如下:
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="UTF-8"> <title>父子关系</title></head><body><script src="./build/react.js"></script><script src="./build/JSXTransformer.js"></script><script type="text/jsx"> var GenderSelect = React.createClass({ render: function() { return <select onChange={this.props.handleSelect}> <option value="0">男</option> <option value="1">女</option> </select> } }) var SignupForm = React.createClass({ getInitialState: function() { return { name: '', password: '', gender: '', } }, handleChange: function(name, event) { var newState = {} newState[name] = event.target.value this.setState(newState) }, handleSelect: function(event) { this.setState({gender: event.target.value}) }, render: function() { console.log(this.state) return <form> <input type="text" placeholder="请输入用户名" onChange={this.handleChange.bind(this, 'name')} /> <input type="password" placeholder="请输入密码" onChange={this.handleChange.bind(this, 'password')} /> <GenderSelect handleSelect={this.handleSelect}></GenderSelect> </form> } }) React.render(<SignupForm></SignupForm>, document.body);</script></body></html>
二、Mixin编写和使用
Mixin=一组方法
Mixin的目的是横向抽离出组件的相似代码
相似概念:面向切面编程、插件
优点:
代码复用
即插即用
适应性强
缺点:
编写难度高
降低代码可读性
代码如下:
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="UTF-8"> <title>Mixin</title></head><body><script src="./build/react.js"></script><script src="./build/JSXTransformer.js"></script><script type="text/jsx"> /*var BindingExample = React.createClass({ getInitialState:function () { return { text:'' } }, handleChange:function (event) { this.setState({text:event.target.value}); }, render:function () { return <div> <input type="text" placeholder="请输入内容" onChange={this.handleChange}/> <p>{this.state.text}</p> </div> } });*/ var BindingMixin = { handleChange:function (key) { var that = this; return function () { var newState = {}; newState[key] = event.target.value; that.setState(newState); } }, }; var BindingExample = React.createClass({ mixins:[BindingMixin], getInitialState:function () { return { text:'', comment:'' } }, render:function () { return <div> <input type="text" placeholder="请输入内容" onChange={this.handleChange('text')}/> <textarea onChange={this.handleChange('comment')}></textarea> <p>{this.state.text}</p> <p>{this.state.comment}</p> </div> } }); React.render( <BindingExample></BindingExample>,document.body );</script></body></html>
1 0
- React组件协同使用
- React组件协同
- 5. React 组件的协同使用 组件嵌套和Mixin
- React学习笔记(6)---组件协同使用介绍
- 14、react之 组件的协同使用(组件的名字首字母必须大写)
- 协同组件使用
- React Native使用原生组件
- React 组件基本使用(一)
- React 组件基本使用(二)
- React Native 之组件react-native-sound的使用
- React-Native中导航组件react-navigation的使用
- 在React中使用extends React.Component定义的组件
- Android React Native使用原生UI组件
- react-native图片组件的使用
- React Native 的 Navigator 组件使用方式
- 使用react写的第一个轮播图组件
- React Native常用组件Image使用
- 使用React.js生成基本组件
- Springboot | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin
- PAT乙级 1023. 组个最小数
- 面试11:数值的整数次方
- eclipse中出现java.lang.OutOfMemoryError: PermGen space解决方法
- 读书笔记_数据结构-使用C++语言描述(第2版)
- React组件协同使用
- 获取Spring MVC注解@ResponseBody的一种实现
- Mac下常用命令
- Hadoop作业初始化过程
- ESP8266使用详解
- 8String to Integer (atoi)
- CentOS和RedHat Linux的区别
- Lua 编程(二) 初级简明语法
- Java中的反射(3)——在运行时使用反射分析实例化的对象