一切从需求出发,一切向功能看齐。咱们讨论一个东西的时候,首先要知道它是干什么? css
例如一个登陆界面UI:html
html和css写好了,放到了render函数中:react
需求是这样的:想要获取真实dom,在react中怎么实现呢?用什么要获取真实的dom,由于react在render中dom
渲染的是虚拟dom(virtual DOM)。函数
有个需求须要处理用户输入的值:这时候咱们就须要获取真实的dom,怎么作呢?this
给input加入一个ref属性,<input ref="Dom" value="111"/> ,经过this.ref.dom就能获取到这个input,this.ref.Dom.value就能获取input中的值。spa
react中的input事件:onChange:当value发生改变时,触发该事件。3d
需求输入的手机号为这种格式:134 7326 0471 ,思路是在onChage事件中处理逻辑:htm
当输入的长度为3,8的时候加入一个" "blog
输入的状况:
var val = this.refs.Phone.value;
if ((val.length == 3 || val.length == 8) && (val.length > this.state.phoneValue.length)) {
val += " ";
}
还有多是ctrl+v过来的信息:
if ((val.length >= 11) && (val.indexOf(' ') == -1)) {
val = val.split(' ').join('').slice(0, 3) + ' ' + val.split(' ').join('').slice(3, 7) + ' ' + val.split(' ').join('').slice(7)
}
控制一下输入的长度:
if (val.length > 11) {
val = val.slice(0,11);
}
getInitialState() {
return({
phoneValue: '',
})
}
this.setState({
phoneValue: val
})
这样咱们就写好了对输入框的的value处理。
关键词:ref virtual DOM