私は<TextInput>
を持っていると私はこれを行うことによって、それをref
属性を与えた:ユーザーがthis.usernameInput
の値を取得しようと<TouchableInput>
を押すとonPressハンドラの<TextInput>の値を取得するにはどうすればよいですか?
ref={node => this.usernameInput = node;}
はその後、私は方法があります。 this.usernameInput
は私のonPress
メソッドではnullではありませんが、値を取得する方法が見つかりません!私がこれをするとき:
console.log(this.usernameInput.value);
それはundefined
を記録します。私がブレークポイントを設定して、this.usernameInput
を調べると、それは見ることができますが、value
のプロパティやメソッドはなく、現在の値を返すことができるプロパティやメソッドは表示されません。 <TextInput>
の値を取得するにはどうすればよいですか?
EDIT
は、ここに私のコンポーネントクラスです:
import {
View,
Text,
TextInput,
TouchableHighlight
} from 'react-native';
import {Manager as ModalManager} from 'react-native-root-modal';
class AppContainer extends React.Component {
loginModal;
constructor(props){
super(props);
this._onLoginPress = this._onLoginPress.bind(this);
this._createLoginModal = this._createLoginModal.bind(this);
}
async componentWillMount() {
this._createLoginModal();
}
render() {
return (
<View >
<Text>Hello.</Text>
</View>
);
}
}
_onLoginPress() {
//this returns 'undefined', although this.usernameInput is not undefined
console.log(`USERNAMEinputValue: ${this.usernameInput.props.value}`);
}
_createLoginModal() {
this.loginModal = new ModalManager(
<View >
<View >
<Text>Username:</Text>
<TextInput
placeholder="Username"
ref={node => {
this.usernameInput = node;
}}
></TextInput>
<TouchableHighlight
onPress={this._onLoginPress}
>
<Text>Login</Text>
</TouchableHighlight>
</View>
</View>
);
}
}
はい、これは動作します。しかし、なぜ名前の先頭にアンダースコアがありますか?この方法は不安定ですか? –
プライベートフィールドまたはプライベートメソッドを意味します。内部使用のみのメソッド。詳細については、http://stackoverflow.com/questions/8288756/in-javascript-what-does-this-underscore-meanをご覧ください。このため、_lastNativeTextフィールドを使用してテキストを取得することはお勧めできません。 – Jickson