React Native - 占位符的长度优先于多行输入的高度
React Native - Length of placeholder takes precedence in multiline-input's height
问题:
我的文本输入占位符最多可以容纳 2000 个字符。只要我的用户开始输入文本输入,占位符就会消失,但文本输入 高度不会自动缩小 。
据我所知,我的多行文本输入的高度是根据占位符文本的原始长度设置的。有没有办法解决这个问题?
我的代码:
import { Input } from 'react-native-elements';
interface Props {
placeHolder: string;
onChangeText: (text: string) => void;
}
const MyTextInput = (inputs: Props) => (
<View>
<Input
inputStyle={{ textAlignVertical: 'top' }}
placeholder={inputs.placeHolder}
onChangeText={(text) => inputs.onChangeText(text)}
multiline={true}
maxLength={2000}
/>
</View>
);
export default MyTextInput;
截图:
长占位符:
用户输入文字:
文本输入高度不缩小:
在 inputStyle 上添加 minHeight 和 maxHeight 应该可以解决您的问题。
设置 clearTextOnFocus 属性将起作用
<Input
clearTextOnFocus={true}
inputStyle={{ textAlignVertical: 'top' }}
placeholder={inputs.placeHolder}
onChangeText={(text) => inputs.onChangeText(text)}
multiline={true}
maxLength={2000}
/>
最后,我添加了一个额外的 value
道具,这样每当用户开始输入时,inputs.onChangeText(text)
就会更新 value
,并且输入的高度会自动缩放到符合内容。当 value
为空或清除时,仅显示 placeHolder
.
interface Props {
placeHolder: string;
onChangeText: (text: string) => void;
value: string;
}
const MyTextInput = (inputs: Props) => (
<View>
<Input
inputStyle={{ textAlignVertical: 'top' }}
value={inputs.value}
placeholder={inputs.placeHolder}
onChangeText={(text) => inputs.onChangeText(text)}
multiline={true}
maxLength={2000}
/>
</View>
);
问题:
我的文本输入占位符最多可以容纳 2000 个字符。只要我的用户开始输入文本输入,占位符就会消失,但文本输入 高度不会自动缩小 。
据我所知,我的多行文本输入的高度是根据占位符文本的原始长度设置的。有没有办法解决这个问题?
我的代码:
import { Input } from 'react-native-elements';
interface Props {
placeHolder: string;
onChangeText: (text: string) => void;
}
const MyTextInput = (inputs: Props) => (
<View>
<Input
inputStyle={{ textAlignVertical: 'top' }}
placeholder={inputs.placeHolder}
onChangeText={(text) => inputs.onChangeText(text)}
multiline={true}
maxLength={2000}
/>
</View>
);
export default MyTextInput;
截图:
长占位符:
用户输入文字:
文本输入高度不缩小:
在 inputStyle 上添加 minHeight 和 maxHeight 应该可以解决您的问题。
设置 clearTextOnFocus 属性将起作用
<Input
clearTextOnFocus={true}
inputStyle={{ textAlignVertical: 'top' }}
placeholder={inputs.placeHolder}
onChangeText={(text) => inputs.onChangeText(text)}
multiline={true}
maxLength={2000}
/>
最后,我添加了一个额外的 value
道具,这样每当用户开始输入时,inputs.onChangeText(text)
就会更新 value
,并且输入的高度会自动缩放到符合内容。当 value
为空或清除时,仅显示 placeHolder
.
interface Props {
placeHolder: string;
onChangeText: (text: string) => void;
value: string;
}
const MyTextInput = (inputs: Props) => (
<View>
<Input
inputStyle={{ textAlignVertical: 'top' }}
value={inputs.value}
placeholder={inputs.placeHolder}
onChangeText={(text) => inputs.onChangeText(text)}
multiline={true}
maxLength={2000}
/>
</View>
);