在自定义视图中调用 super() 时,请确保传递与传递组件构造函数相同的 props



这是我的代码

警告: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
}

相关内容

  • 没有找到相关文章

最新更新