reactjs - 在同一屏幕上处理多个平面列表

标签 reactjs react-native redux react-redux react-native-flatlist

当在同一屏幕上有两个平面列表时,请帮助我处理不必要的重新渲染

我的屏幕需要两个平面列表-

  1. 对于主机
  2. 对于队列

当组件挂载时,我会像这样从 api 调用中获取数据-

{
  "hosts": [{"id":"1", "name":"kyouma"},...],
  "queue": [{"id":"99", "name":"eren"},...]
}

现在我要做的是将我的 hostsqueue 分别存储在我的 redux 存储中,就像这样-

this.props.dispatch({
        type: GET_ROOM_HOSTS,
        payload: info['hosts']
      })

this.props.dispatch({
        type: GET_ROOM_QUEUE,
        payload: info['queue']
      })

其中 info 是从 api 调用接收到的对象,如上所示。现在我将 ma​​pStateToProps 这两个从 redux 存储到默认屏幕组件,这样 -

  1. this.props.roomQueue 用于queue
  2. this.props.roomHosts 用于主机

我的FlatList的是这样的-

<FlatList
   data={this.props.roomQueue}
   horizontal={true}
   keyExtractor = {item => item.id}
   renderItem({item} => {
    return(
        <customComponent (with suitable props) ..../>
        )
    })
/>
<FlatList
   data={this.props.roomHosts}
   numColumns={3}
   keyExtractor = {item => item.id}
   renderItem({item} => {
    return(
        <customComponent (with suitable props) ..../>
        )
    })
/>

请注意 FlatList 的 出现在屏幕的同一个组件 (React.Component) 中,并显示在屏幕的不同部分(底部队列)屏幕顶部的屏幕和主机)。 queuehosts 也是相互独立的。屏幕看起来像这样 enter image description here

我的问题是,即使 this.props.roomQueue 发生变化,FlatListdata={this.props.roomHosts} 重新渲染。

如何防止重新渲染以确保只有当 FlatList 的 相应数据发生变化时,才会重新渲染,否则不会。我是否必须更改存储队列主机 的方式?还是有别的东西?

最佳答案

您可以只使用一个平面列表来做到这一点。将您的两个数组合并为一个并显示一个列表中的结果。您可以在 ui 中使用一种类型来保存它们。

这是开发人员所做的一个真正的过程,cz 在同一页面和同一方向呈现 2 个列表实际上并不意味着。您的查询有效。

关于reactjs - 在同一屏幕上处理多个平面列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63355038/

相关文章:

javascript - 如何在 apache 服务器上部署没有 index.html 的 React 应用程序以进行生产

javascript - 结合 React、Redux 和 React-Router 时,正确的做法是什么?

node.js - 使用 React Native 和 API 后端进行身份验证

javascript - 在服务器渲染期间存储/保留 session

javascript - 导入 ngrx 开发工具时无法读取未定义的属性 'whitelist'

reactjs - 类型错误 : Cannot read property 'width' of undefined when using ImageBackground

node.js - 如何在 Socket.io 中与 Heroku 服务器建立套接字连接?

google-plus - 使用 React Native 实现 Google+ 登录

javascript - 无法点击 iOS 模拟器中的文本字段或按钮

react-native - 我如何从 Appjs 中的商店获取状态?