yiminghe@gmail.com
包含
不包含
react 是一个做 UI 的库,具体来说是做 UI 组件的库,专注于做 mvc 中的 v.
可以把一个组件看做一个状态机, 每一次状态对应于组件的一个 ui
jsx
event
composition
props/state
mixin
form
refs
component api
top api
类似 xml 的语法,用来描述组件树
#
1
React.createElement('div',{
className:'x'
},[
React.createElement('a',{href:'#'},'#'),
React.createElement(Component,{x:'y'},1);
]);
注意和 html 语法不太一样,比如必须是驼峰命名, 以及属性名不能和 js 关键字冲突,例如:className,readOnly
可以通过 {变量名} 来将变量的值作为属性值
可以用通过 {...obj} 来批量设置一个对象的键值对到组件的属性,注意顺序
通过 this.props 可以获取传递给该组件的属性值,还可以通过定义 getDefaultProps 来指定默认属性值
注意:默认值为所有组件实例共享的
通过指定 propTypes 可以校验属性值的类型
注意:校验仅为提升开发者体验
组件内部的状态,可以使用 state
可以通过设置原生 dom 组件的 onEventType 属性来监听 dom 事件,例如 onClick, onMouseDown,在加强组件内聚性的同时,避免了传统 html 的全局变量污染
注意:事件回调函数参数为标准化的事件对象,可以不用考虑 ie
可以像使用原生 dom 组件一样使用自定义的组件
自定义组件中可以通过 this.props.children 访问自定义组件的子节点
mixin 是一个普通对象,通过 mixin 可以在不同组件间共享代码
和 html 的不同点:
如果设置了 value 属性,那么改组件变为受控组件,用户无法输入,除非程序改变 value 属性
可以通过监听 onChange 事件结合 state 来改变 input 的值
设置 defaultValue 为设置 input 的初始值,之后 input 的值由用户输入
类似还有 defaultChecked
该功能是为了结合现有非 react 类库,通过 ref/refs 可以取得组件实例,进而取得原生节点
注意:尽量通过 state/props 更新组件,不要使用该功能
React.createClass 定义组件时允许传入的配置
React.createClass 定义时允许传入的函数,会在特定生命周期内调用
初次创建组件时调用
组件的属性值改变时调用
最后是 componentWillUnmount 组件从 dom 销毁前调用