2016-12-04 62 views
0

例如,中繼是否能夠知道某個字段應該是Date,並將該值從string轉換爲Date?有沒有可以放置這種邏輯的地方?如何用繼電器執行類型強制?

+0

我想這應該由查詢的'resolve'函數來完成 – Khang

回答

0

也許,這取決於您希望轉換髮生的位置。

如果它是一個變量,Relay容器有一個prepareVariables道具,它具有一個函數。不過,我懷疑這是你以後的事情,因爲你不能通過一個Date對象作爲變種。如果是這樣的事情, 不過,這裏有一個例子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)