2017-10-10 43 views
0

我有一個處理相當大的數據集的組件,並且我創建了一個數組的代理包裝,幫助處理重複的操作,如排序。如何確保React道具是正確的類型

我想確保如果數據(data道具)作爲一個數組傳遞到我的組件中,它將得到圍繞它的代理。換句話說,就像這樣:

constructor(props, ...args) { 
    if (props.data && !props.data.isData) { 
    props.data = new Proxy(props.data, proxyHandlers); 
    } 

    super(props, ...args); 
} 

(以及componentWillReceiveProps中的類似內容)。

這不起作用,因爲React鎖定道具使它不可變。什麼是正確的,React-y完成這個的方式?

+3

爲什麼一定要留* *的道具?你能不能將代理對象保存到'this.state'甚至只是'this'? – Chris

+0

這看起來像一個不好的模式,因爲您必須在構造函數和componentWillReceiveProps中執行此操作 – Axnyff

+0

https://stackoverflow.com/a/26089687/4341456 – Daniel

回答

1

您應該使用更高階的組件將道具轉換爲您想要的。

喜歡的東西

const props => { 
    if (props.data && !props.data.isData) { 
    const newData = new Proxy(props.data, proxyHandlers); 
    return <MyOldComponent data={newData} />; 
    } 
    return null; 
} 
相關問題