假設我有組件層次結構A,B,C。 有沒有一種方法可以在不使用道具的情況下從C調用A的函數?問題是:是否有可能從流程中排除中介B?如何在不使用React中的道具的情況下向組件層次傳遞函數?
0
A
回答
2
您可以使用Context來實現此目的。根據反應文檔它允許:
通過組件樹通數據,而不必在每一級手動向下傳遞道具 。
0
是的,這是可能的。傳遞的功能道具B,則通過同樣的道具的道具C.Then可以調用函數如下:
this.props.someFunction();
+0
問題是如何做到這一點,而不必傳遞道具:) –
+0
是的,我看到問題被編輯。 –
0
語境是一個解決方案,但可能是一個壞主意,特別是如果你」重新加入React。
嘗試使用ES6的...rest
操作,喜歡解決問題如下:
const A = ({ arg1, arg2 = 4, ...rest }) => (
<B size={arg1 * arg2} {...rest} />
);
const B = ({size, size = {}, ...rest}) => (
<C {...rest} style={style} />
);
這是一個原始例子,這個想法是,C得到的一切B被給予,而B不知道所有這些參數,只會提供它們。這裏B提供style
但不知道style
是給他的。但C知道他可以得到size
,因此可以使用它。
如果你不知道上下文是如何工作的,這種方法要比使用上下文好得多。你應該首先嚐試這個休息事情而不是上下文。
上下文有時非常有用,但通常情況下,您必須知道自己在做什麼。
請注意,此解決方案需要ES6,因此您需要使用Babel或同等工具來轉儲代碼。
相關問題
- 1. React-Native在不使用導航器的情況下傳遞道具?
- 2. 如何通過React中的道具傳遞函數到不同的組件中的函數?
- 3. 如何在不傳遞函數的情況下訪問函數中的變量?
- 4. 如何將道具傳遞給React中的非呈現函數?
- 5. 如何在不使用url的情況下傳遞參數
- 6. 如何在不使用segue的情況下傳遞數據
- 7. 如何將道具傳遞給React中的兒童組件
- 8. 傳遞道具到React組件樹
- 9. 傳遞多個道具到React組件
- 10. 如何將Meteor訂閱數據傳遞到使用ES6的React組件道具
- 11. 在不使用GET的情況下在URL中傳遞數據
- 12. 如何在不遞歸的情況下調用相同的函數兩次
- 13. 如何在參數未知的情況下使用參數傳遞函數?
- 14. 如何在不調用多次輸入的情況下編寫遞歸函數?
- 15. 將道具傳遞給React中的子組件(TSX文件)
- 16. 測試React組件方法正在調用函數傳遞作爲道具
- 17. 如何在不使用事件的情況下將數據從一個組件傳遞到其他組件
- 18. 如何在不使用connect()的情況下將redux派發函數傳遞給智能組件?
- 19. 在不知道類型的情況下傳遞類的實例
- 20. 如何在不使用文件輸入的情況下將Zip文件傳遞到函數中
- 21. 如何傳遞React組件作爲道具
- 22. 如何將道具傳遞給兒童React組件?
- 23. 如何從React路由器傳遞組件作爲道具?
- 24. 如何在不知道參數的情況下使用dll?
- 25. 在將組件作爲道具傳遞時在組件中鍵入React組件
- 26. 如何在不立即運行的情況下將參數傳遞給函數?
- 27. 將道具傳遞給React Router 4中的組件
- 28. 在不使用類/對象的情況下遞歸創建樹層次結構
- 29. 如何在不使用指針的情況下將動態二維數組傳遞給函數?
- 30. 更改從React Native中的父組件傳遞的道具數組
只需詳細說明:通過在A上實現'getChildContext()'和定義'childContextTypes',可以使用'contextTypes'在任何後代組件中使用該函數。在整個層次結構中維護這不是強制性的。 –
示例[here](https://egghead.io/lessons/javascript-redux-passing-the-store-down-implicitly-via-context)和警告[此處](https://facebook.github.io/ react/docs/context.html#why-not-to-use-context) – juancab
在您發佈的同一鏈接中,建議不要使用上下文。 '如果你想讓你的應用程序穩定,不要使用上下文。這是一個實驗性的API,它很可能在未來的React版本中打破。' –