react native 中View元件中的ref屬性介紹
在用Reactnative寫工程時,預設奇妙的有一種像OC中,或者Java 中或目前類別的私有屬性的想法,state 和props都不能滿足時,就是ref
它能達到其他語言中持有一個view元件,局部的刷新
## ref 接受值為string類型的參數或一個函數function
#callback。这一特性让开发者对ref的使用更加灵活。 render() { return <TextInput ref={(c) => this._input = c} />; }, componentDidMount() { this._input.focus(); }, render(){ return <View ref={ (e) => this._view = e } />//将组件view作为参数赋值给了this._view } componentDidMount(){ this._view.style = { backgroundColor:'red',width:100,height:200 } }
心得:ref屬性在開發中使用頻率很高,使用它你可以獲取到任何你想要獲取的組件的對象,有個這個對像你就可以靈活地做很多事情,比如:讀寫對象的變量,甚至呼叫物件的函數。
有時候我們需要直接改變元件並觸發局部的刷新,但不使用state或是props。
setNativeProps 方法可以理解為web的直接修改dom。使用該方法修改 View 、 Text 等 RN自帶的元件
,則不會觸發元件的 componentWillReceiveProps 、 shouldComponentUpdate
、componentWillUpdate 等元件生命週期中的方法。
'use strict'import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, TextInput } from 'react-native'; import Dimensions from 'Dimensions';// 屏幕宽度var screenWidth = Dimensions.get('window').width; class RNRefDetail extends Component {// 构造 constructor(props) { super(props);// 初始状态this.state = { textInputValue: ''}; this.buttonPressed = this.buttonPressed.bind(this); } buttonPressed() { //当按钮按下的时候执行此函数let textInputValue = 'yuanmenglong';this.setState({textInputValue});//修改文本输入框的属性值this.refs.textInputRefer.setNativeProps({ editable:false});this.refs.text2.setNativeProps({ style:{ color:'blue', fontSize:30} });//使文本输入框变为不可编辑 } render() {return (//ref={'text2'}> //指定本组件的引用名<View style={styles.container}> <Text style={styles.buttonStyle} onPress={this.buttonPressed}>按我</Text> <Text style={styles.textPromptStyle} ref="text2">文字提示</Text> <View> <TextInput style={styles.textInputStyle} ref="textInputRefer" value={this.state.textInputValue} onChangeText={(textInputValue)=>this.setState({textInputValue})}/> </View> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center'}, buttonStyle: { //文本组件样式,定义简单的按钮fontSize: 20, backgroundColor: 'grey'}, textPromptStyle: { //文本组件样式fontSize: 20}, textInputStyle: { //文本输入组件样式width: 150, height: 50, fontSize: 20, backgroundColor: 'grey'} }); module.exports = RNRefDetail;
当点击按钮时,会刷新3个控件的值,但是只是单独去改变,而不是通过改变state状态机的机制来刷新界面,在重复需要多次刷新时使用,普通的时候直接通过state改变即可。 这样用的缺点就是局部改变,回导致状态机混乱。
在用Reactnative寫工程時,預設奇妙的有一種像OC中,或者Java 中或當前類別的私有屬性的想法,state 和props都不能滿足時,就是ref
它能達到其他語言中持有一個view元件,並且局部的刷新
ref 接受值為string類型的參數或一個函數function
callback。这一特性让开发者对ref的使用更加灵活。 render() {return <TextInput ref={(c) => this._input = c} />; }, componentDidMount() {this._input.focus(); },
心得:ref屬性在開發中使用頻率很高,使用它你可以獲取到任何你想要獲取的組件的對象,有個這個對像你就可以靈活地做很多事情,比如:讀寫對象的變量,甚至呼叫物件的函數。
有時候我們需要直接改變元件並觸發局部的刷新,但不使用state或是props。
setNativeProps 方法可以理解為web的直接修改dom。使用該方法修改 View 、 Text 等 RN自帶的元件
,則不會觸發元件的 componentWillReceiveProps 、 shouldComponentUpdate
、componentWillUpdate 等元件生命週期中的方法。
'use strict'import React, { Component } from 'react';import { AppRegistry, StyleSheet, Text, View, TextInput } from 'react-native';import Dimensions from 'Dimensions';// 屏幕宽度var screenWidth = Dimensions.get('window').width;class RNRefDetail extends Component {// 构造constructor(props) {super(props);// 初始状态this.state = { textInputValue: ''}; this.buttonPressed = this.buttonPressed.bind(this); } buttonPressed() { //当按钮按下的时候执行此函数let textInputValue = 'yuanmenglong';this.setState({textInputValue});//修改文本输入框的属性值this.refs.textInputRefer.setNativeProps({ editable:false});this.refs.text2.setNativeProps({ style:{ color:'blue', fontSize:30} });//使文本输入框变为不可编辑} render() {return (//ref={'text2'}> //指定本组件的引用名<View style={styles.container}> <Text style={styles.buttonStyle} onPress={this.buttonPressed}>按我</Text> <Text style={styles.textPromptStyle} ref="text2">文字提示</Text> <View> <TextInput style={styles.textInputStyle} ref="textInputRefer"value={this.state.textInputValue} onChangeText={(textInputValue)=>this.setState({textInputValue})} /> </View> </View> ); } }const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center'},buttonStyle: { //文本组件样式,定义简单的按钮fontSize: 20,backgroundColor: 'grey'},textPromptStyle: { //文本组件样式fontSize: 20},textInputStyle: { //文本输入组件样式width: 150,height: 50,fontSize: 20,backgroundColor: 'grey'} });module.exports = RNRefDetail;
這樣用的缺點就是局部改變,回導致狀態機混亂。
以上是react native 中View元件中的ref屬性介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

不少用戶在玩win10的的一些遊戲的時候總是會遇到一些問題,比如說卡屏和花屏等等情況,這個時候我們是可以採用打開directplay這個功能來解決的,而且功能的操作方法也很簡單。 win10舊版元件directplay怎麼安裝1、在搜尋框裡面輸入「控制台」然後開啟2、檢視方式選擇大圖示3、找到「程式與功能」4、點選左側的啟用或關閉win功能5、選擇舊版這裡的勾選上就可以了

PHP、Vue和React:如何選擇最適合的前端框架?隨著互聯網技術的不斷發展,前端框架在Web開發中起著至關重要的作用。 PHP、Vue和React作為三種代表性的前端框架,每一種都具有其獨特的特徵和優勢。在選擇使用哪種前端框架時,開發人員需要根據專案需求、團隊技能和個人偏好做出明智的決策。本文將透過比較PHP、Vue和React這三種前端框架的特徵和使

Angular框架中元件的預設顯示行為不是區塊級元素。這種設計選擇促進了元件樣式的封裝,並鼓勵開發人員有意識地定義每個元件的顯示方式。透過明確設定CSS屬性 display,Angular組件的顯示可以完全控制,從而實現所需的佈局和響應能力。

win10舊版元件是需要使用者自己去設定裡面打開的,因為很多的元件平時都是預設關閉的狀態,首先我們需要進入到設定裡面,操作很簡單,跟著下面的步驟來就可以了win10舊版元件在哪裡開啟1、點選開始,然後點選「win系統」2、點選進入控制台3、再點選下面的程式4、點選「啟用或關閉win功能」5、在這裡就可以選擇你要的開啟了

Java框架與React框架的整合:步驟:設定後端Java框架。建立專案結構。配置建置工具。建立React應用程式。編寫RESTAPI端點。配置通訊機制。實戰案例(SpringBoot+React):Java程式碼:定義RESTfulAPI控制器。 React程式碼:取得並顯示API回傳的資料。

越來越多的用戶開始升級win11系統,由於每個用戶的使用習慣不同,還是有不少用戶在使用ie11瀏覽器,那麼win11系統用不了ie瀏覽器,該怎麼辦呢? windows11還支援ie11嗎?下面就來看看解決方法。 win11無法使用ie11瀏覽器的解決方法1、先右鍵開始選單,選擇「命令提示字元(管理員)」開啟。 2.開啟之後,直接輸入“Netshwinsockreset”,回車確定。 3.確定之後再輸入「netshadvfirewallreset&rdqu

近期不少的win10用戶們在使用電腦瀏覽器的時候發現自己的ie瀏覽器總是自動的跳到edge瀏覽器,那麼win10打開ie自動跳轉edge怎麼關閉?。下面就讓本站來為用戶們來仔細的介紹一下win10打開ie自動跳轉edge關閉方法吧。 1.我們登入edge瀏覽器,點選右上角...,找下拉的設定選項。 2.我們進入設定後,在左側欄點選預設瀏覽器。 3.最後我們在相容性中,勾選不允許IE模式下重新載入網站,重啟ie瀏覽器即可。

ie捷徑無法刪除的解決方法:1、權限問題;2、捷徑損壞;3、軟體衝突;4、登錄問題;5、惡意軟體;6、系統問題;7、重新安裝IE;8、使用第三方工具;9、檢查捷徑的目標路徑;10、考慮其他因素;11、諮詢專業人士。詳細介紹:1、權限問題,右鍵點擊快捷方式,選擇“屬性”,在“安全性”選項卡中,確保有足夠的權限刪除該快捷方式,如果沒有,可以嘗試以管理員身份運行等等。
