这是我的代码
警告:Loaderview(...):在
LoaderView
中调用Super()时, 一定要通过与组件的构造函数相同的道具 通过。
import * as React from "react";
import {ActivityIndicator, Text, View} from 'react-native'
export class LoaderView extends React.Component {
constructor(props) {
super(props)
}
props = {
title: "",
loading: false
}
render() {
if (this.props.loading) {
return <View {...this.props} style={{flex: 1, justifyContent: 'center'}}>
<ActivityIndicator
size={"large"}
animating={true}/>
<Text
style={{textAlign: 'center', fontSize: 20, fontWeight: '500'}}>
{this.props.title}
</Text>
</View>
} else {
return <View {...this.props} style={{flex: 1, justifyContent: 'center'}}>
<Text
style={{textAlign: 'center', fontSize: 20, fontWeight: '500'}}>
{this.props.title}
</Text>
</View>
}
}
}
如何在上述代码中解决此警告?
使用DefaultProps代替Props
static defaultProps = {
title: "",
loading: false
}
我得到了此警告,事实证明这对我来说是红鲱鱼。请注意,尽管有这样的警告,该代码有效。解决方案是为您的道具对象声明接口,并确保您不要错过任何属性。特别是,您可能缺少 ID 。就我而言,不需要构造函数,而super(props)
也无济于事。示例:
export interface LoaderProps extends React.Props<LoaderProps> {
id: string;
title: string;
loading: bool;
}
export class LoaderView extends React.Component<LoaderProps> {
//...
}
我只使用了 this.props = props
,这对我有用!
constructor(props) {
super(props)
this.props = props
}