我一直在试图弄清楚为什么我的 React Native 项目中出现流错误。我无法找到一个直接的答案,因此我很困惑。该项目有效,但我仍然有此错误。
无法创建
TextInput
元素,因为属性touched
是 对象类型 [1] 中缺少,但存在于道具 [2] 中。[1] [2]无法创建
TextInput
元素,因为缺少属性valid
在对象类型 [1] 中,但存在于道具 [2] 中。[1] [2]
这指向下面代码中的第 8 行。
// @flow
import React from 'react';
import { TextInput, StyleSheet } from 'react-native';
type Props = { style: Object, valid?: bool, touched?: bool };
const defaultInput = (props: Props) => (
<TextInput <--- Error Points Here!!!
underlineColorAndroid="transparent"
{...props}
style={[styles.input, props.style, !props.valid && props.touched ? styles.invalid : null]}
/>
);
const styles = StyleSheet.create({
input: {
width: "100%",
borderWidth: 1,
borderColor: "#eee",
padding: 5,
marginTop: 8,
marginBottom: 8
},
invalid: {
backgroundColor: '#f9c0c0',
borderColor: 'red'
}
});
export default defaultInput;
我对为什么流会抛出此错误以及它的含义感到困惑。我一直在尝试解决问题,但到目前为止还没有解决方案。
任何帮助将不胜感激。我希望这也有助于其他人。
谢谢。
在这里提供帮助有点晚了,但我也遇到了这个问题并开始寻找答案,所以希望这可以帮助其他人。
我能够通过使用我在功能组件中使用的道具来解决此问题,如下所示:
type Props = {
loading: boolean
};
export default function LoadingIndicator(props: Props) {
// this is the key! Take out the props you've defined in your type above
const { loading, ...other } = props;
if (loading) {
return (
<View
{...other}
style={styles.loadingIndicator}>
<ActivityIndicator animating size="large" />
</View>
);
} else return null;
}
确保将...props
更改为您命名的剩余道具的任何内容,在本例中为 ...other
.
就是这样!错误将消失。