2016-12-04 7 views
0

リレーは、たとえばフィールドがDateであることを知り、その値をstringからDateに変換できますか?この種の論理を置くことができる場所はありますか?リレーで型強制を実行する方法は?

+0

私は、これは、クエリの 'resolve'機能によって行われるべきだと思います – Khang

答えて

0

おそらく、変換がどこに起こるかによって異なります。

変数の場合、Relayコンテナには、機能を持つprepareVariables小包があります。私はこれがあなたの後ろのものだとは思わないが、Dateオブジェクトをvarに渡すことはできないので(afaik)それはそのようなものなら、 はしかし、ここでの例だadapted from the docs:

module.exports = Relay.createContainer(ProfilePicture, { 
    initialVariables: {size: 5}, 
    prepareVariables: prevVariables => { 
    return { 
     ...prevVariables, 
     size: typeof prevVariables.size === 'number'? * prevVariables.size : Number(prevVariables.size), 
    }; 
    }, 
}); 

あなたはリレーコンテナの出力を強制することを望んでいるなら、あなたは、小道具を消費するのコンポーネントでそれを行うにはいずれかの必要がありますまたは高次コンポーネントで実行できます。ここでは最上級recompose使用して同じ例(とrecompose relay-containerは、同じ著者による、)です:

export default compose(
    createContainer({ 
     fragments: { 
     widget:() => Relay.QL` 
      fragment on Widget { 
      myDate 
      }` 
     } 
    }), 
    withProps(props => ({myDate: props.widget.myDate instanceof myDate ? props.widget.myDate : new Date(props.widget.myDate)})) 
)(ProfilePicture) 
関連する問題