2017-11-12 14 views
0

defaultPropsを取ることはありませんが、私がdefaultPropsを設定した場合、graphqlは小道具値を拾うことができないようです。以下のようにGraphQLアポロクエリオプションは、私は私のクエリの動的変数を渡すために、クエリオプションを使用してい

マイコード:小道具をログアウト

Page.defaultProps = { 
    startDate: moment().hour(15).toISOString(), 
    endDate: moment().add(1).hour(3).toISOString(), 
}; 


export default compose(graphql(myQuery, { options: (props: IPageProps) => ({ variables: { range: { start: props.startDate, end: props.endDate }}}))(Page); 

は、より良い方法はありdefaultPropsが実際にした場合のコンポーネントの負荷を含めるには時間がかかるため、変数は常に{ startDate: undefined, endDate: undefined }

になるだろうことを示していますこれを処理するの?トリッキーだ

答えて

1

。最も簡単な方法は、2回だけデフォルトを宣言するために、次のようになります。

const DEFAULT_START = moment().hour(15).toISOString() 
const DEFAULT_END = moment().add(1).hour(3).toISOString() 

Page.defaultProps = { 
    startDate: DEFAULT_START, 
    endDate: DEFAULT_END, 
} 

const options = ({ startDate: start = DEFAULT_START, endDate: end = DEFAULT_END }) => ({ variables: { range: { start, end } } }) 

export default compose(graphql(myQuery, { options })(Page); 

あなたはこの方法は、あなたが完全defaultPropsとしてそれらを含めスキップする可能性が意味するだろう、それをやって、クエリのstartDateまたはendDate外を参照する必要がない場合。

+0

、これは実際に理にかなって、私は別の高次成分とコンポーネントをラップし、それに小道具を渡してしまいました。しかし、良い提案! – tropicalfish

関連する問題