2017-10-28 14 views
0

次のコードでフローエラーが発生しています。オブジェクト型(この型は未定義とは互換性がありません(あまりにも少ない引数、期待されるデフォルト/残りのパラメータ))

[flow] object type (This type is incompatible with undefined (too few arguments, expected default/rest parameters)) 
type Props = { 
    levels: { 
     image: string; 
     name: string; 
     description: string; 
     slug: string; 
     value: number; 
    }[]; 
} 

そして、ここに私のコードです:私は取得していますエラーがあり、それはincompatible with undefinedを言うので

// @flow 
// @jsx h 
import { h, Component } from 'preact'; 

// Components 
import Level from '../components/Level'; 

type Props = { 
    levels: Array<{ 
    image: string, 
    name: string, 
    description: string, 
    slug: string, 
    value: number, 
    }> 
}; 

type State = {} 

class Levels extends Component<Props, State> { 
    onclick =() => { /* ... */ } 

    render({ levels }: Props) { 
        ^^^^^ <-- Error here 
    return (
     <div> 
     <ul> 
      {levels.map(level => <Level {...level} />)} 
     </ul> 
     </div> 
    ); 
    } 
} 

export default Levels; 

エラーメッセージが少し混乱しています。私は小道具を定義した。

私は間違っていますか?そう...

class Levels extends Component<Props> { 
    onclick =() => { /* ... */ } 

    render(props: Props | void) { 
    return (
     <div> 
     <ul> 
      {props && props.levels.map(level => <Level {...level} />)} 
     </ul> 
     </div> 
    ); 
    } 
} 

のように修正された

+1

プレアクトのタイプ定義は、反応タイプ定義から拡張されています。 'render'引数としての小道具へのアクセスは、reactではサポートされておらず、フローは常にそれが未定義であるとみなします。代わりに、 'this.props.levels.map(...)'のように、代わりにインスタンスプロパティとしてプロップにアクセスすることを検討してください。反応と準備の両方がこれをサポートし、流れを幸せに保ちます。 – mpontus

答えて

関連する問題