首页 / REACT / React 组件协同关系
React 组件协同关系
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了React 组件协同关系,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3859字,纯文字阅读大概需要6分钟。
内容图文
组件协同的两种方法,1种是纵向的协同,就是组件嵌套,重点在于代码的封装,2种是横向协同也就是Mixin,组件抽离,重点在于代码复用
1、组件嵌套,父组件通过属性向子组件,子组件可以通过事件处理函数以委托的方式想父组件发送数据
1 <! DOCTYPE html > 2 < html > 3 < head > 4 < meta http-equiv =‘Content-type‘ content =‘text/html; charset =utf-8‘ > 5 < title >daomul‘s example</title> 6<link rel="stylesheet" href="../shared/css/base.css"/> 7</head> 8<body> 9<h1>Text demo</h1>10<div id="container">1112</div>1314<script src="../shared/thirdparty/es5-shim.min.js"></script>15<script src="../shared/thirdparty/es5-sham.min.js"></script>16<script src="../shared/thirdparty/console-polyfill.js"></script>17<script src="../../build/react.js"></script>18<script src="../../build/JSXTransformer.js"></script>19<script type="text/jsx">2021//选择组件22var GenderSelect = React.createClass({ 2324 render:function(){ 25 console.log("render,4"); 26return<select onChange = {this.props.handleSelect}>27<option value ="0">男</option>28<option value ="1">女</option>29</select>;30 }, 31 }); 3233//表单组件34var SignupForm = React.createClass({ 35 getInitialState:function(){ 36return { 37 name :‘‘, 38 password:‘‘, 39 gender:0, 40 }; 41 }, 42 handleChange:function(name,event){ 43var newState = {}; 44 newState[name] = event.target.value; 45this.setState(newState); 46 }, 47 handleSelect:function(event){ 48this.setState({gender:event.target.value}); 49 }, 50 render:function(){ 51 console.log(this.state); 52return<form>53<input type ="text" placeholder ="请输入用户名" onChange = {this.handleChange.bind(this,‘name‘)} ></input>54<input type ="text" placeholder ="请输入密码" onChange = {this.handleChange.bind(this,‘password‘)} ></input>55<GenderSelect type="text" handleSelect = {this.handleSelect}></GenderSelect>56</form>;57 }, 58 }); 5960 React.render(<SignupForm></SignupForm> ,document.body);6162</script>63</body>64</html>
2、Mixin就是 横向抽离相似的代码
1 <! DOCTYPE html > 2 < html > 3 < head > 4 < meta http-equiv =‘Content-type‘ content =‘text/html; charset =utf-8‘ > 5 < title >daomul‘s example</title> 6<link rel="stylesheet" href="../shared/css/base.css"/> 7</head> 8<body> 9<h1>Text demo</h1>10<div id="container">1112</div>1314<script src="../shared/thirdparty/es5-shim.min.js"></script>15<script src="../shared/thirdparty/es5-sham.min.js"></script>16<script src="../shared/thirdparty/console-polyfill.js"></script>17<script src="../../build/react.js"></script>18<script src="../../build/JSXTransformer.js"></script>19<script type="text/jsx">2021//Mixin22var BindMixin = { 23 handleChange:function(key){ 24//先将this保存起来是因为在js中,方法内部再调用函数的话会使得this的丢失25var self =this26//这个变量如果放在function内部的话会加大构建的内存损耗27var newState = {} 28returnfunction(event){ 29//这里不能直接使用self.setState({key:event.targe.value})30//因为key是作为‘key‘字符串的存在传入的31 newState[key] = event.target.value 32 self.setState(newState) 33 } 34 } 35 } 36var TextClass = React.createClass({ 3738//这里就是作为对Mixin的使用39 mixins : [BindMixin], 40 getInitialState:function(){ 41return { 42 name :‘‘, 43 password:‘‘, 44 }; 45 }, 46 render:function(){ 47return<div>48<input type ="text" placeholder ="请输入用户名" onChange = {this.handleChange(‘name‘)} ></input>49<input type ="text" placeholder ="请输入密码" onChange = {this.handleChange(‘password‘)} ></input>50<p>{this.state.name}</p>51<p>{this.state.password}</p>52</div>;53 }, 54 }); 5556 React.render(<TextClass></TextClass> ,document.body);5758</script>59</body>60</html>
原文:http://www.cnblogs.com/daomul/p/4857377.html
内容总结
以上是互联网集市为您收集整理的React 组件协同关系全部内容,希望文章能够帮你解决React 组件协同关系所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。