今日は新しいリンターを使用して開始(tslint反応し)、それは私に次のような警告を与えている:JSX属性のLambdaはアンチパターンですか?
私はこの原因ことを得る
「ラムダは、そのレンダリングパフォーマンスへの影響にJSXの属性禁じられています」各レンダリングで作成される新しい関数。また、子コンポーネントはそれが変更された小道具だと思うので、不要な再レンダリングを引き起こす可能性があります。
しかし、私の質問はこれです、どのように他することができますループ内のイベントハンドラに1つのパスパラメータ:
customers.map(c => <Btn onClick={() => this.deleteCust(c.id) } />);
レンダリングと実際のDOM突然変異との間には違いがあります。なぜなら、レンダリングの結果が以前と同じであれば、反応調整はDOMに触れないからです。しかし、矢印関数を使用する場合、レンダリングの結果は同じではないため、DOMの突然変異が発生します。 –
@Koen。 DOMを更新するときに 'onClick'ハンドラがカウントするとは思いません。 Reactは、合成されたイベントを持つ抽象レイヤーを持つため、関数をDOMに直接バインドしません。したがって、DOMを変更しないため、関数の変更はDOMに影響を与えません。 – Sulthan
ああ、意味がある。 –