簡體   English   中英

如何避免兄弟組件重新渲染

[英]How to avoid sibling component rerender

我想知道是否有可能在數據未更改時避免兄弟組件重新呈現。 我想這可能是因為我的結構方式所致,所以讓我澄清一下我今天所擁有的。 我有一個智能組件,該組件可以訪問類似於以下的狀態:

showcaseState = {
    products: {
        1: {
            name: "Ball"
        },
        2: {
            name: "Puzzle"
        }
    },
    cart: [2]
}

並且此智能組件將呈現兩個Dumb組件。 第一個(ProductsList組件)接收產品列表,第二個(Cart組件)獲取一個列表,該列表僅包含與cart屬性內的索引匹配的產品。 每當我在ProductsList組件內單擊一個產品時,它都會觸發將該產品索引添加到購物車的操作,因此Cart組件將被重新呈現。

事實是,即使數據完全沒有變化,ProductsList也會重新呈現。 我的猜測是,這是因為主要組件重新發布了。 我如何避免這種情況? 我是否應該使ProductList組件更智能,讓它訪問產品狀態並從Main組件中刪除產品?

我對於哪種是實現此目標的最佳方式有些困惑。

編輯

Smart組件的渲染是這樣的

let { products, cart } = this.props.app
let cartProds = cart.map(prodId => { return products[prodId] })

<div>
    <ProductsList prods={products} />
</div>
<div>
    <Cart prods={cartProds} />
</div>

對於對此感興趣的任何人,我最終使用redux來管理應用程序狀態,並分離了每個組件所需的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM