1.组件名称必须是大写字母开头,且调用它的时候必须先定义或引用它。
2.组件的返回值必须只有一个根元素;
3.props不可修改
4.使用componentDidMount来挂载东西
5.使用componentWilUnmount来卸载东西
6.正确使用状态state
①不能直接更新状态,要使用this.setState(),构造函数是唯一能够初始化this.state的地方;
②状态更新可能是异步的,所以不能依靠它的值来计算下一个状态,优化:使用第二中setState形式,接受一个函数,参数为上一次的状态;
③状态更新合并,浅合并,也就是当更新其中一个属性值的时候,其他的属性值也会合并到更新的状态中;
7.数据自顶向下流动,单向数据流
8.事件:
绑定事件属性命名为驼峰命名
采用jsx语法需要传入函数作为事件处理函数,而不是字符串
不能使用return false 来阻止默认行为,只能用preventDefault;
9.当使用class语法来定义一个组件的时候,事件处理器会成为类的一个方法。类的方法默认不绑定this的。如果绑定this,要在构造函数中用bind重新指定。如果忘记在构造函数中绑定并将它传入给事件,当调用函数的时候返回undefined。
10.通常情况下,如果你没有在方法后面添加(),应该为这个方法在构造函数中绑定this。this.fangfa = this.fangfa.bind(this);
也可以用另外两个方法:①使用属性初始化器来正确绑定回调函数;fangfa = () =>{};
②在回调函数中使用箭头函数:onClick = {(e)=>this.fangfa(e)};但如果作为属性值传递给低级组件的话,会出现额外的重新渲染,不建议使用。
11.向事件处理程序添加参数
①onClick = { (e)=>this.fangfa(id,e) }
②onClick = {this.fangfa.bind(this,name)} 注:在函数中,事件对象e 排在所有的参数后面 -----> fangfa(name,e){}
12.条件渲染组件
①声明变量并使用if条件渲染组件
②与运算符&&
因为在js中,true && expression ===>expression
false && expression ====>false
③三目运算符
④rander方法返回null
13.元素位于map()方法内时需要设置键属性key
14.数组元素中使用key在兄弟间是独一无二的,然而不需要是全局唯一的。
15.key是给react的提示,不是传递给用户的组件,如果组件中需要使用与key相同的值,请使用其他属性名显示传递。
- <input type = "text" > <textarea> <select> 都是通过传入value属性来实现对组件的控制。
17.组件与模块
网友评论