ListView 不会在状态更改时重新渲染

Posted

技术标签:

【中文标题】ListView 不会在状态更改时重新渲染【英文标题】:ListView Will not re-rendered on state change 【发布时间】:2017-11-16 18:00:15 【问题描述】:

问题是这样的。基于状态变量,我要么在 ListView 渲染行上渲染可重用组件,要么返回 null。

//renderRow 
if (this.state.openSections[sectionID] === false) return null

    return (<View style = flex :1, overflow : 'hidden'>
                <CalculatorItem item = rowData></CalculatorItem>
             </View>)

当按下某个部分时,openSections 对象中的相应条目会切换为 true 或 false,指示应呈现行,以便对用户可见。

sectionPressed: function(sectionID) 
    ...
        //create a new openSections var and set the state
        this.setState((state, props) =>  return   openSections );
    

但是,listview 项目不会被渲染。

有什么线索吗?

【问题讨论】:

需要更多上下文。列表视图在哪里? 你能在这里分享代码吗? 【参考方案1】:

问题是 ListView 仅在其数据源发生更改时才会重新呈现。否则,它将保持原样。因此,当您更改状态时,您可能还想更改 dataSource 属性中的值。

【讨论】:

以上是关于ListView 不会在状态更改时重新渲染的主要内容,如果未能解决你的问题,请参考以下文章

在反应中更改状态时组件不会重新渲染

React Native ListView 不会通过单击重新呈现状态更改

Vue 列表项不会在状态更改时重新渲染

state 用作组件中的 props,状态更改不会重新渲染组件

高阶组件状态正在正确更新,但接收道具的包装组件不会在状态更改时重新渲染

即使调用了渲染函数中的 console.log,组件也不会在状态更改时重新渲染