defaultValue
が設定された<TextInput/>
と、<TextInput>
のdefaultValue
をトリガーして他の場所に渡すボタンがあります。
しかし、<TextInput/>
のdefaultValue
を<TouchableHighlight/>
のonPress
メソッドに渡すにはどうすればよいですか?
これは私が達成しようとしていることです:
changeName(text) {
this.setState({nameNow: text}) //How can I immediately set the defaultValue='PassMeIn' to nameNow? Because this method would never be called unless text is changed within TextInput
}
sendOff() {
//Would like to access the defaultValue='PassMeIn' here whenever sendOff() is called. How can I?
}
render() {
return (
<View>
<TextInput
defaultValue='PassMeIn'
onChange={this.changeName}
value={this.state.nameNow}
/>
<TouchableHighlight onPress={this.sendOff}/>
<Text>Button</Text>
</TouchableHighlight>
</View>
)
}
1つは、render
メソッドが複数のノードを返すことはできないということです。 <TextInput/>
は<TouchableHighlight/>
コンポーネントでラップする必要があると思います。
render() {
return (
<TouchableHighlight onPress={this.sendOff}>
<TextInput
defaultValue='PassMeIn'
onChange={this.changeName}
value={this.state.nameNow}
/>
</TouchableHighlight>
)
}
これにより、小道具を<TouchableHightlight>
から<TextInput
に渡して、defaultValue
として使用できるようになり、<TouchableHighlight>
コンポーネントでアクセスできるようになります。
DefaultValueを新しい状態に保存してから、両方の場所でアクセスできます
constructor(props) {
super(props);
this.state = {
//...other state
defaultValue: "PassMeIn"
};
//...other code
sendOff() {
//...do things with this.state.defaultValue
}
render() {
return (
<TextInput
defaultValue={this.state.defaultValue}
onChange={this.changeName}
value={this.state.nameNow}
/>
<TouchableHighlight onPress={this.sendOff}/>
)
}