發(fā)布于:2021-02-10 00:00:26
0
216
0
從組件本身內(nèi)部檢索React組件的DOM節(jié)點是相當簡單的,但是如果要向后工作怎么辦:按DOM節(jié)點檢索組件的實例呢?這個方法是舊的Dojo Toolkit的Dijit框架允許使用的dijit.byId方法,因此讓我思考是否可以使用React進行同樣的操作。事實證明,您可以按DOM節(jié)點檢索組件實例!
以下函數(shù)允許您通過DOM節(jié)點獲取React組件實例:
function findReactElement(node) { for (var key in node) { if (key.startsWith("__reactInternalInstance$")) { return node[key]._debugOwner.stateNode; } } return null;}
如果該節(jié)點是React組件的根,您將看到大量令人驚奇的信息,例如其屬性,狀態(tài),上下文,引用,方法列表等:
修改道具/狀態(tài)和調(diào)用渲染方法似乎實際上并沒有執(zhí)行任何操作,因此從外部看似乎無法進行操作,但是如果僅需檢查,能夠基于DOM節(jié)點獲取組件實例將非常有用。