TextInput onFocus 和 onBlur.React-Native 时更改样式
Change style when TextInput onFocus and onBlur.React-Native
我在 5 页中有 40 个 TextInput,需要更改输入文本颜色 onfocus:'white' 和 onBlur:'gray'
我知道如何为单个 input.But 我需要多个输入
<TextInput
clearTextOnFocus={true}
keyboardType="number-pad"
style={[this.state.isFocused?styles.inputOnFocus:styles.input]}
onChangeText={v=>handleInput('value',v)}
value={this.state.value}
onFocus={()=>this.setState({isFocused:true})}
onBlur={()=>this.setState({isFocused:false})}
/>
您可以简单地为每个输入分配一个 ID,并使用该 ID 来了解关注的是哪个 ID:
<TextInput
clearTextOnFocus={true}
keyboardType="number-pad"
style={[this.state.FocusedItem === "TextInput1"? styles.inputOnFocus : styles.input]}
onChangeText={v=>handleInput('value',v)}
value={this.state.value}
onFocus={()=>this.setState({FocusedItem: "TextInput1"})}
onBlur={()=>this.setState({FocusedItem: ""})}
/>
在 .map()
函数中它可能是这样的:
arr.map( (item, index) => {
let ID = "TextInput"+index
return (
<TextInput
clearTextOnFocus={true}
keyboardType="number-pad"
style={[this.state.FocusedItem === ID? styles.inputOnFocus : styles.input]}
onChangeText={v=>handleInput('value',v)}
value={this.state.value}
onFocus={()=>this.setState({FocusedItem: ID})}
onBlur={()=>this.setState({FocusedItem: ""})}
/>
)
})
这只是为了专注。如果代码保持这样,所有输入将具有相同的值
在组件中设置文本输入及其样式。然后在组件中使用状态来控制你的样式。
const [focus, setFocus] = useState(false);
<TextInput
style={focus ? styles.inputOnFocus : styles.inputOnBlur}
onFocus={() => setFocus(true)}
onBlur={() => setFocus(false)}
/>
样式:
const styles = StyleSheet.create({
inputOnFocus: { borderColor: '#C0C0C0' },
inputOnBlur: { borderColor: '#4b6cd5' }
});
我在 5 页中有 40 个 TextInput,需要更改输入文本颜色 onfocus:'white' 和 onBlur:'gray' 我知道如何为单个 input.But 我需要多个输入
<TextInput
clearTextOnFocus={true}
keyboardType="number-pad"
style={[this.state.isFocused?styles.inputOnFocus:styles.input]}
onChangeText={v=>handleInput('value',v)}
value={this.state.value}
onFocus={()=>this.setState({isFocused:true})}
onBlur={()=>this.setState({isFocused:false})}
/>
您可以简单地为每个输入分配一个 ID,并使用该 ID 来了解关注的是哪个 ID:
<TextInput
clearTextOnFocus={true}
keyboardType="number-pad"
style={[this.state.FocusedItem === "TextInput1"? styles.inputOnFocus : styles.input]}
onChangeText={v=>handleInput('value',v)}
value={this.state.value}
onFocus={()=>this.setState({FocusedItem: "TextInput1"})}
onBlur={()=>this.setState({FocusedItem: ""})}
/>
在 .map()
函数中它可能是这样的:
arr.map( (item, index) => {
let ID = "TextInput"+index
return (
<TextInput
clearTextOnFocus={true}
keyboardType="number-pad"
style={[this.state.FocusedItem === ID? styles.inputOnFocus : styles.input]}
onChangeText={v=>handleInput('value',v)}
value={this.state.value}
onFocus={()=>this.setState({FocusedItem: ID})}
onBlur={()=>this.setState({FocusedItem: ""})}
/>
)
})
这只是为了专注。如果代码保持这样,所有输入将具有相同的值
在组件中设置文本输入及其样式。然后在组件中使用状态来控制你的样式。
const [focus, setFocus] = useState(false);
<TextInput
style={focus ? styles.inputOnFocus : styles.inputOnBlur}
onFocus={() => setFocus(true)}
onBlur={() => setFocus(false)}
/>
样式:
const styles = StyleSheet.create({
inputOnFocus: { borderColor: '#C0C0C0' },
inputOnBlur: { borderColor: '#4b6cd5' }
});