Reactコンポーネントからデータを読み取りますか?[複製]
Dec 01 2020
Reactを使用しているサードパーティのWebページでreactコンポーネントに関連付けられたデータを読み取れるようにしたいと思います。そのページのChromeDevコンソールツール内でjavascriptを使用してこれを読み取れるようにしたいと思います。これは可能ですか?
たとえば、reactによって描画されるTR要素があります。通常のdocument.getElementById()を使用してこのTRを取得し、それを使用して基になる反応データを取得したいと思います。
React Developer Tools Extensionを使用すると、props.dataの下にあるデータを確認できます。どうすればそれを読み取ることができますか?
ここでは、Reactをブラックボックスとして扱っていることに注意してください。
注:この回答によれば、DOM要素からreactオブジェクトを取得でき、それは機能します:React-デバッグのためにDOM要素からコンポーネントを取得します
window.findReactComponent = function(el) {
for (const key in el) {
if (key.startsWith('__reactInternalInstance$')) {
const fiberNode = el[key];
return fiberNode && fiberNode.return && fiberNode.return.stateNode;
}
}
return null;
};
しかし、それを手に入れたら、どうすれば小道具にたどり着くことができますか?
回答
1 DanielWilliams Dec 01 2020 at 06:19
あは、鍵を見つけました。正しいDOM要素を取得する際には注意が必要です。私は階層をはるかに下にしようとしていました。React Devツール拡張機能を使用して「一致するDOM要素を検査する」と、適切な要素が得られ、その小道具を取得できました。