我知道無狀態組件使用起來更加舒適(在特定場景中),但由於無法使用shouldComponentUpdate,這是否意味着組件會爲每個道具更改重新渲染呢?我的問題是,它是否更好(性能明智)使用具有智能shouldComponentUpdate的類組件比使用無狀態組件。具有shouldComponentUpdate與無狀態組件的組件。性能?
就性能而言,無狀態組件是更好的解決方案嗎? 考慮這個傻例如:
const Hello =(props) =>(
<div>
<div> {props.hello}</div>
<div>{props.bye}</div>
</div>);
VS
class Hello extends Component{
shouldComponentUpdate(nextProps){
return nextProps.hello !== this.props.hello
};
render() {
const {hello, bye} = this.props;
return (
<div>
<div> {hello}</div>
<div>{bye}</div>
</div>
);
}
}
假設這些成分都具有2個道具,我們只希望跟蹤其中的一個更新,如果改變(這是一種常見的用例),使用無狀態功能組件還是類組件更好?
UPDATE
做一些研究,以及經過我同意了明顯的答案。儘管類組件(使用shouldComponentUpdate)的性能更好,但對於簡單組件來說,改進似乎可以忽略不計。所以我的看法是這樣的:
- 對於複雜的組件使用類由PureComponent或組件擴展(取決於如果你要實現自己的shouldComponentUpdate)
- 對於簡單的部件,即使這意味着將重新呈現使用功能部件運行
- 試圖削減爲了從最近可能的階級基礎組件的更新量,使樹爲靜態地(如果需要)
可能重複的[React無狀態組件 - 性能和PureRender](https://stackoverflow.com/questions/41185752/react-stateless-components-performance-and-purerender) –
@MayankShukla所以一般的經驗法則是就性能而言,使用shouldComponentUpdate的狀態是否可取?這是否意味着性能方面沒有理由使用無國籍我是對的?根據[Don的鳴叫](https://twitter.com/dan_abramov): –
:*沒有對它們進行「優化」支持,因爲無狀態組件被內部包裝在一個類中。它是相同的代碼路徑。*在同一主題上查看這個不錯的[**文章**](http://moduscreate.com/react_component_rendering_performance/)。目前沒有任何改善,但將來可能會有所改善。 –