layout: post title: React Native 的一些问题记录
以下问题基于 0.42 版本
在安卓上 keyboardWillShow 和 keyboardWillHide 不触发,iOS 上都可用。
参见:https://github.com/facebook/react-native/issues/3468
默认 flex: 'column', 表现是两个元素纵向排列
通过外层包一个 View 来实现
需要添加 numberOfLines 属性
<TouchableWithoutFeedback>
<CustomComponent />
</TouchableWithoutFeedback>
需要在内嵌组件上接受所有 props
const CustomComponent = (props) {
const { children, ...restProps } = props;
return <View {...restProps}>{children}</View>
};
ScrollView 上设置 keyboardDismissMode={'on-drag'},点击在键盘位置下面的输入框会让键盘迅速弹起又收起。
需要修改安卓项目的配置文件来修复,参考:https://github.com/facebook/react-native/issues/6174
暂不支持 iOS 上指定位置的圆角 通过外层 View 的 radius 属性来实现,View 上需要添加 overflow: 'hidden' 上面的方案在安卓上无效,安卓上依然通过指定位置的圆角来实现
由于有默认的 padding,当 height 设置为小于 30 的值的时候,在安卓上会显示不出来输入框
const data = new FormData();
data.append('files', {
uri: imageURI,
type: imageType,
name: imageName,
});
data.append('username', username);
const resp = await fetch({
method: requestMethods.POST,
type: requestTypes.FORM_DATA,
path: requestPath.upload,
data,
});
安卓上输入框底部默认有一条边框,需要使用 underlineColorAndroid={colors.transparent} 去除
由于源码存在 bug,参考 https://github.com/JodiWarren/react-native/pull/1/files 修改源码即可