2017-01-03 10 views
-1

これは状況です:DOMを直接操作するか、React state/propsを使用する必要がありますか?

このコンポーネントは、多くのデータをリストとしてレンダリングします。私は(クラスを追加したり、いくつかの属性を変更)DOMのスタイルを制御する状態/小道具を反応させるの使用している場合は、リアクトユーザーはmouseoverclickおよびなどのように、リストと反応..

けれどもが持って反応すると、常にrender()機能を実行します仮想DOM技術を使用していますが、毎回render()を実行することはまだ非常に効率的ではないと思います。ドキュメントはDOMを直接操作することはお勧めしませんが、より効率的だと思います。私は何をすべきか?どうも。

+2

ドキュメントの推奨事項に従ってください(必要がない限り、直接DOMを操作しないでください)。言い換えれば、ベストプラクティスに従ってください。何かが遅くて非効率に見えるようになったら、それ以降は心配してください。 – Jack

+0

ボトルネックになるまで、効率は心配しないでください。これは「時期尚早の最適化」と呼ばれ、悪い習慣です。 Reactは60fpsでDOMを更新するのに十分速いです。出力を反応させるDOMを突然変異させないでください。 –

答えて

0

私は書いてみませんかReactとDOMを直接操作してください。両方のどちらか一方ではない。

すでにReactを使用している場合は、必要なものだけ使用してください。可能であれば、可能な限り部品を分解してください。これは数字のレンダリングに役立ちます。

Reactをあまりにも多くレンダリングするのは、やや効率が悪いかもしれませんが、ReactはDOM操作のために非常に最適化されています。

0

reactを再レンダリングしている限り、それは大きく最適化されています。 render()関数はすべての小さな操作で実行されると思うかもしれませんが、表示されていないのは、変更された部分だけでなくDOM全体でrerenderが発生しないということです。

リアクションではvirtual DOM technologyを使用し、現在の仮想ドームと仮想ドームの違いを文字列比較のように取り出し、その差異をレンダリングするだけで非常に効率的です。

私はドキュメントに従うことをお勧めします。また、DOM操作と反応を混在させることはお勧めしません。

関連する問題