javascript - 如何绕过嵌套元素重新渲染卡片?
问题描述
我创建了一个移动应用程序。它有一个包含产品列表的卡片列表。最初,产品包含不完整的信息。我们将有一个减速器 - **卡**。在其中,初始状态将是这样的:
state = {};
当我们进入移动应用程序时,我们将卡片与商品拉在一起,然后我们的状态转换为:
state = {
flowers: [
{
id: 1,
name: "Rose"
},
{
id: 2,
name: "Cactus"
}
],
…
}
当我单击产品时,例如“Rose”,我会从 API 响应中获得有关该产品的更多信息。现在我们的状态看起来像这样:
state = {
flowers: [
{
id: 1,
name: "Rose",
color: "red"
},
{
id: 2,
name: "Cactus",
}
],
…
}
在我以我们的 reducer 的状态编写它之后,我们有一个重新渲染屏幕,这些卡所在的位置。
问题:
当我只更改某张卡中的一个产品时,我重新渲染了所有卡和所有产品,尽管一张卡中只有一个产品发生了变化。当在 reducer 中触发更改状态时,我将新状态返回为 {... state, ... payload}。在有效载荷中,我通过:
flowers: [
{
id: 1,
name: "Rose",
color: "red"
},
{
id: 2,
name: "Cactus",
}
],
我们的数据在变化,所以我们重新渲染 FlatList。
卡片位于垂直方向的 FlatList 中。项目位于水平方向的 FlatList 中。
问题:
我知道为了让我们更改 FlatList,我们需要将新数据传输到它。但是是否有可能以某种方式避免重新渲染所有卡片和所有未更改的产品。毕竟,如果它们会很多,那么这将导致FPS的强烈下沉。
解决方案
推荐阅读
- wildfly - JBoss WildFly 15.0.1 Final 未在具有 2 GB 的 ubuntu 14.04 vServer 上启动:JRE 内存不足
- laravel - 开发 laravel 和 vue 项目的最佳解决方案是什么?
- javascript - 如何在点击时更改服务器字段的值
- python - 类型错误:assertListEqual() 缺少 1 个必需的位置参数:'list2'
- javascript - 翻译字符串提取
- bash - 如何在 Ansible playbook 中为每个客户端设置不同的环境变量
- javascript - 将 OnClick 事件从组件传递到其他组件
- php - 'mail(): "sendmail_from" 未在 php.ini 中设置或自定义 "From:" 标头丢失' 错误
- java - 无法从 MainActivity 中找到 Menu.xml 中包含的特定项目 ID
- css - Sass/Css 我可以在悬停动作中设置多个类吗?