React笔记汇总(二)
来源:互联网 发布:轻松装团购 知乎 编辑:程序博客网 时间:2024/05/22 22:19
列表
错误的打开方法
<ul> <Item/> <Item/> <Item/> ...</ul>
正确的打开方法
<ul> {arr}</ul>arr.push(<Item/>);arr.push(<Item/>);arr.push(<Item/>);...
例子
//子组件class Item extends React.Component { constructor(...args){ super(...args); } render(){ return <li>{this.props.value}</li> }}// 父组件class List extends React.Component { constructor(...args){ super(...args); } render(){ var arr=[12,8,5,9]; var result=[]; for(var i=0; i<arr.length;i++){ result.push(<Item key={i} value={arr[i]}/>); } return <ul> // 这里的result是变量,需要用{}括起来 {result} </ul> }}window.onload=function(){ var oDiv = document.getElementById('div1'); ReactDOM.render( <List/>, oDiv );}
组件节点
除了利用state储存状态控制组件元素的样式,
还可以通过给组件元素添加ref的方式,在类的方法里通过this.ref获取元素,然后对其控制。
fn(){ var oS=this.refs['s1']; oS.style.color='red';}render(){ return <div> <input type="button" value="按钮" onClick={this.fn.bind(this)}/> <span ref="s1">aaa</span> </div>}
表单注意事项
使用value时,改成defaultValue;
checkbox的checked要改成defaultChecked
组件通信
this.props.children
class NotesList extends React.Component{ render() { return ( <ol> { React.Children.map(this.props.children, function (child) { return <li>{child}</li>; }) } </ol> ); } }; ReactDOM.render( <NotesList> <span>hello</span> <span>world</span> </NotesList>, document.querySelector('#container') );
this.props.children 的值有三种可能:
如果当前组件没有子节点 undefined 一个子节点 object 多个子节点 array
所以,处理 this.props.children 的时候要小心。
React 提供一个工具方法 React.Children 来处理 this.props.children 。
我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object。
父子通信
父组件定义的属性,子组件通过this.props.属性名
来获取。
class Son extends React.Component{ constructor(...args){ super(...args); } render(){ // 通过props获取 return <div>{this.props.a}</div> } } class Father extends React.Component{ constructor(...args){ super(...args); // 定义了一个a变量 this.a=12; } render(){ return <div> <div>aaa</div> <Son a={this.a}/> // 在这里把变量a传进去子组件 <div>bbb</div> </div> } }
子父通信
父组件定义一个回调函数,
子组件通过this.props.回调函数获取函数,然后传入参数。
class Son extends React.Component{ constructor(...args){ super(...args); // 子集里有num=55 this.num=55; } render(){ // 通过props.cb传给回调函数 this.props.cb(this.num); return <div>{this.props.a}</div> }}class Father extends React.Component{ constructor(...args){ super(...args); this.a=12; } // num被传送到这里 fn(num){ alert(num); } render(){ return <div> <div>aaa</div> <Son cb={this.fn.bind(this)}/> // 把回调函数传入子组件 <div>bbb</div> </div> }}
组件生命周期
componentWillMount() 创建前 componentDidMount() 刚创建完 componentWillUpdate() 更新前 componentDidUpdate() 刚更新 componentWillUnmount() 销毁之前 componentWillReceiveProps() 组件参数更新 shouldComponentUpdate() 主要用于性能优化
详细介绍
http://www.cnblogs.com/gdsblog/p/7348375.html
阅读全文
0 0
- React笔记汇总(二)
- React笔记汇总(一)
- React学习笔记(二)
- react项目学习笔记二(react-router)
- React Native 项目 常用 第三方组件 汇总(二)
- React Native 学习笔记(二)
- React Native 学习笔记(二)
- react && redux 学习笔记(二)
- react native 开发笔记(二)
- React-Native学习笔记(二)
- React-native 学习笔记二
- React学习笔记_redux二
- React Native学习笔记(二)JSX 语法学习
- 浅谈慕课网React入门课程笔记(二)
- React入门笔记(二):组件和AJAX
- React入门教程(二)
- React入门教程(二)
- react入门(二)
- 运维面试问答
- bzoj 4480: [Jsoi2013]快乐的jyy
- Perfect Squares——动态规划
- 高盛为什么认为中国AI领域将超越美国?
- numpy.transpose()
- React笔记汇总(二)
- (4)Fragment家族常用的API
- Form 回车提交查询与提交查询
- Android干货 看这里 点我秒领取
- [FAQ17853]M上默认接入点apn显示
- 4480: [Jsoi2013]快乐的jyy
- 华人新移民在美国哪里定居最适合?第一名居然是....
- Shell常用命令总结
- vi和vim的区别