除了固有的几个标签,为了方便开发,QAP还提供了一套组合的UI组件,具体的使用请查看nuke的文档。
Rax的标签还可以无限扩展,除了rax的几个固定标签,还可以自定义无限的标签,每个标签就是自己写的一个组件。 (怎么写相关组件,请查看组件的教程)
rax使用了react的语法,所以在开发之前,需要先理解react的语法,同时只支持了es6的写法。
React.createClass
, 只能使用class MyClass extends Component
的写法比如下边3个属性得赋值
getInitialState: function() { return { esVersion: `${this.props.name} v1.0`, clickCounts: 0, }; }, getDefaultProps: function() { return { name: 'ES5Syntax', year: 2014, label: 'ClickMe', }; }, propTypes: { name: React.PropTypes.string.isRequired, year: React.PropTypes.number.isRequired, // isRequired:本属性必须被包含,否则会产生 warning label: React.PropTypes.string },
需要使用如下的方法定义
state = { sVersion: `${this.props.name} v1.0`, clickCounts: 0, }; static defaultProps = { name: 'ES6Syntax', year: 2015, label: 'ClickMe', }; // 注意这里有分号,用 `class` 定义的类内部的属性需要用分号 `;` 间隔开,方法不需要。 static propTypes = { name: React.PropTypes.string.isRequired, year: React.PropTypes.number.isRequired, label: React.PropTypes.string.isRequired, }; // 注意这里有分号
es5中,react会把所有类里的函数都绑定一次this,
在es6中,这一切都要自己进行绑定。
class MyClass extends Component { //利用箭头函数绑定 method = ()=> { } method2() { } render() { //利用bind进行绑定 var bind = this.method2.bind(this); } }
es5中
esVersion: this.props.name + “ v1.0”,
es6中支持这样 esVersion: ${this.props.name} v1.0
,
比如
传统的css中
定义css
.class { width: 2323 }
在rx中需要定义为
class = {
width: 2323
}
同时,为了方便,定义的时候可以定义为
const styles = { class: { width: 2323 } }
使用上的区别
单个class
<Text style={styles.class} >
多个class
<Text style={[styles.class, style.class2]} >
行内css
<Text style={{width: '2323rem'}} >
行内与class的混用
<Text style={[{width: '2323rem'}, styles.class]} >
完整的css属性一览 请查看 支持CSS属性一览