2017-08-31 80 views
2

我正在使用react和redux制作应用程序。我想停止父组件中的子组件更新,即使它们独立连接到状态。 shouldComponentUpdate并不妨碍这一点。有没有可能的方法?也许像缓存一个预渲染版本的孩子?我不需要它是互动的,甚至不需要滚动。我只需要它在视觉上是相同的。禁止更新连接到redux状态的子组件

代码示例:

class SomeComponent extends Component { 
    constructor() { 
    super() 
    this.state = { dontReload: false } 
    } 

    render() { 
    return (
     <div> 
     <SomeStateConnectedComponent /> 
     </div> 
    ) 
    } 
} 

我怎么会让它所以如果dontReload是真实的状态连接的组件不更新?

+0

为什么不'shouldComponentUpdate'不在这里工作?如果你使用的是redux,那么你可能会使用'mapStateToProps',这样prop的平等(或者你想使用的任何逻辑)检查应该是完全正确的。 – monners

+0

嘿@ user5505266随时让我知道我的答案是否误解了某些内容,或者如果你想澄清你的问题。 :) – jonahe

回答

1

您能否导出<SomeStateConnectedComponent />所基于的未连接组件,然后将一些假道具(包括() => {}等回调)传递给该连接组件,并使用该连接组件而不是连接版本?这应该创建并显示该组件的非更新版本。

因为听起来好像你会被迫更改<SomeStateConnectedComponent />(至少通过一些额外的道具)的代码,只是为了这个(看起来)很小的用例。

编辑:与state.dontReload使用,你可以做一个有条件的渲染,类似像

return this.state.dontReload ?  
    <NonConnectedComponent fakeProp={42} /> : 
     <SomeStateConnectedComponent />