【发布时间】:2021-03-03 09:22:49
【问题描述】:
React Native Paper 中 Modal 上的 TextInput 的一些奇怪行为。当我键入一个字符时,它被输入到文本框中,但随后光标又闪回(好像它被删除了),然后又重新出现。这一切都发生得很快,角色被保留了下来,但看起来有点笨拙。下面的GIF来说明:
模态的代码相当简单:
import { Portal, Modal, Button, Title, Text, TextInput } from 'react-native-paper';
const [nameNew, setNameNew] = useState('')
const [emailNew, setEmailNew] = useState('')
const renderModalAddPerson = () => {
return (
<Portal>
<Modal visible={visibleModalAddPerson} onDismiss={closeModalAddPerson} contentContainerStyle={styles.modalContainer}>
<View>
<Title style={{alignSelf:'center'}}>Title here</Title>
<Text> </Text>
<TextInput
mode="outlined"
label="Name"
style={{alignSelf:'center', width:'95%'}}
value={nameNew}
onChangeText={nameNew => setNameNew(nameNew)}
ref={input1}
returnKeyType='next'
blurOnSubmit={false}
onSubmitEditing={() => input2.current.focus()}
/>
<TextInput
mode="outlined"
label="Email"
style={{alignSelf:'center', width:'95%'}}
value={emailNew}
onChangeText={emailNew => setEmailNew(emailNew)}
ref={input2}
returnKeyType='done'
blurOnSubmit={false}
onSubmitEditing={() => addPerson()}
/>
<Button
uppercase={false}
style={{backgroundColor:'#2c3e50', width: '95%', alignSelf:'center', margin: 10}}
labelStyle={{color:'white'}}
onPress={()=>addPerson()}
>Add person</Button>
</View>
</Modal>
</Portal>
);
};
在 iOS 上观察到的问题,未在 Android 上测试过
【问题讨论】:
-
你所在的州是哪里?它只是从您的 sn-p 中丢失了吗?因为我以前见过这个,输入没有任何状态
-
抱歉,sn-p 错过了。我现在已将状态包含在 sn-p 中。
-
这是“正常”行为。建议您使用不受控制的行为。这意味着您省略 value={emailNew} 并仅在 addPerson() 中检索 emailNew。这允许您使用双空格(句点 .)行为也。
标签: javascript reactjs react-native react-native-paper react-native-modal