this.state:开发中,组件确定要与用户进行交互,React的一大创新就是将组件当作了一个状态机,一开始有一个初始状态,而后用户交互,致使状态变化,从而触发从新渲染页面html
一、当用户点击组件,致使状态变化,this.setSate方法就修改状态值,每次修改之后,会自动调用this.render方法,再次渲染组件
二、能够把组件当作一个状态机,根据不一样的status有不一样的UI展现,只要使用setState改变状态值,根据diff算法算出有差值后,就会执行ReactDom的render方法,从新渲染界面
this.props和this.state都用于描述组件的特性,区别在于:
this.props表示那些一旦定义,就再也不更改的特性;
this.state是会随着用户交互而产生改变的特性react
获取真实的Dom节点:
一、在React Native中,组件并非真实的DOM节点,而是存在于内存中的一种数据结构,叫虚拟DOM
二、只有当它插入文档后,才会变成真实的DOMweb
在以前的html,JavaScript中须要经过ID,className等来获取,在react native中真实的Dom节点经过ref获取算法
clicking(){ this.setState({ title:'变化了' }) //获取topView还有那个Text那个节点: this.refs.topView this.refs.event } render() { return ( <View style={styles.container}> <View style={styles.top_topContainer} ref="topView"> <Image style={styles.Icon} source={require('./imgs/hb.jpg')}/> <TextInput style={styles.userStyle} placeholder='请输入用户名' clearButtonMode='always' //never 永远不显示删除 always 一直显示 clearTextOnFocus={true} //获取焦点时是否清空文字 、 enablesReturnKeyAutomatically={false} //是否自动启用回车键,有内容就显示,没有就不启用 returnKeyType = 'go' //回车键上的文字: go前往 join加入 next 下一项 route路线 send 发送 search 搜索 onChangeText={()=>{console.warn('用户名是...')}} //文字修改完从新给state的query赋值 /> <TextInput style={styles.userStyle} placeholder='请输入密码' clearButtonMode='always' //never 永远不显示删除 always 一直显示 clearTextOnFocus={true} //获取焦点时是否清空文字 password={true} enablesReturnKeyAutomatically={false} //是否自动启用回车键,有内容就显示,没有就不启用 returnKeyType = 'go' //回车键上的文字: go前往 join加入 next 下一项 route路线 send 发送 search 搜索 onChangeText={()=>{console.warn('用户名是...')}} //文字修改完从新给state的query赋值 /> </View> <View style={styles.loginStyle}> <TouchableOpacity onPress={()=>{this.clicking()}}> <Text style={ {textAlign:'center'}} ref="event">文章学习</Text> </TouchableOpacity> </View> </View> ); }
ref就能够获取某一个真实的dom节点数据结构
本文同步分享在 博客“zoepriselife316”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。dom