首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

已更改的传入属性不会重新呈现react-sortable-hoc列表

react-sortable-hoc是一个用于实现可排序列表的React组件库。它提供了一种简单的方式来创建可拖拽和重新排序的列表。

在使用react-sortable-hoc时,如果传入的属性发生了变化,列表不会重新呈现。这是因为react-sortable-hoc使用了React的shouldComponentUpdate生命周期方法来优化性能。默认情况下,React会对组件的props进行浅比较,如果props没有发生变化,组件就不会重新渲染。

这种优化可以提高性能,避免不必要的重新渲染。但是,如果我们希望在传入属性发生变化时重新呈现列表,可以通过设置shouldComponentUpdate方法来实现。

以下是一个示例代码,展示了如何在传入属性发生变化时重新呈现react-sortable-hoc列表:

代码语言:txt
复制
import React, { Component } from 'react';
import { SortableContainer, SortableElement } from 'react-sortable-hoc';

// 创建可排序的列表项组件
const SortableItem = SortableElement(({ value }) => (
  <li>{value}</li>
));

// 创建可排序的列表组件
const SortableList = SortableContainer(({ items }) => (
  <ul>
    {items.map((value, index) => (
      <SortableItem key={`item-${index}`} index={index} value={value} />
    ))}
  </ul>
));

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      items: ['Item 1', 'Item 2', 'Item 3'],
    };
  }

  // 当传入属性发生变化时,重新呈现列表
  componentDidUpdate(prevProps) {
    if (prevProps.items !== this.props.items) {
      this.setState({ items: this.props.items });
    }
  }

  render() {
    return <SortableList items={this.state.items} />;
  }
}

export default App;

在上面的示例中,我们通过在组件的componentDidUpdate方法中检查传入属性的变化,来更新列表的状态。这样,当传入属性发生变化时,列表会重新呈现。

对于react-sortable-hoc的更多信息和使用方法,可以参考腾讯云的相关产品文档:react-sortable-hoc

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

创造无限可能 | 在 Android 12 中使用 widget

更简单配置 在 Android 12 之前,重新设置 widget 意味着用户必须删除现有 widget,然后使用新配置重新添加。...这个操作会跳过额外配置步骤,您可以直接在用户主屏幕上呈现 widget。与此同时,请您确保添加 reconfigurable flag,以便用户后续可以更改生效默认配置。...由于我们把配置活动添加至 appwidget-provider configure 属性中,用户长按 widget 并点击编辑/重新设置按钮时,配置就会生效。...这也使系统能在不唤醒应用情况下,显示不同尺寸 widget。 要做到这一点,首先您需要创建一组不同尺寸布局,然后调用 updateAppWidget() 函数,并传入一组布局 (如下图所示)。...这并不会改变 widget 无状态特性,但您可以添加一个监听器来观察状态变化。

1.6K20

前端里拖拖拽拽了解一下?

也就是说,如果不阻止放置元素 dragOver 事件,则放置元素不会响应“拖动元素”“放置行为” // 让绑定该事件元素支持放置 function handleDragOver(e) { //...2.1 设计实现 结合上述 Drag & Drop 事件类型,那么拖拽排序主要是针对“拖动对象”之间相互作用关系逻辑梳理,此处我们暂且区分为: 源对象: 拖拽列表中被拖动单个列表项 目标对象:...拖拽列表中和“源对象”产生“相互作用”列表项 整体交互事件设计思路如下: (1) ondragstart 此时开始拖拽“源对象”时机,在此事件回调函数中改变“源对象”样式,设置拖拽一些传递参数等初始值...,主动调用绑定在“源对象”身上事件,此时恢复更改样式。...: https://github.com/clauderic/react-sortable-hoc/ 关于几者差异,可以参阅:《关于react中使用拖拽插件评测[4]》 四、总结 由于低代码平台其实会有丰富拖拽场景

4.9K30
  • 优化 React APP 10 种方法

    同样,它可以用于根据其属性缓存功能组件。 2.虚拟化长列表 如果呈现大型数据列表,建议一次在浏览器可见视口内仅呈现一小部分数据集,然后在列表滚动时呈现下一个数据,这称为“窗口” 。...因此,重新选择可通过浅遍遍遍prev和当前Redux状态字段来检查宝贵时间,尽管它们具有不同内存引用,但它们是否更改。...如果字段更改,它将告诉React重新渲染;如果没有字段更改,则尽管创建了新状态对象,它也会取消重新渲染。 6. 使用 Web worker JS代码在单个线程上运行。...TestComp会在func props属性中实际上接收到一个props函数,每当重新渲染App时,都会检查TestCompprops函数是否相同,如果发现相同,则不会重新渲染。...当要重新渲染组件时,React会将其先前数据(属性和上下文)与当前数据(属性和上下文)进行比较,如果它们相同,则不会进行重新渲染,但是如果存在差异,则该组件并重新渲染其子级。

    33.9K20

    Vue 中 强制组件重新渲染正确方法

    ---- 有时候,依赖 Vue 响应方式来更新数据是不够,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前DOM,重新开始。那么,如何让Vue以正确方式重新呈现组件呢?...$forceUpdate(); // ... } } } 重要提示:这不会更新任何计算属性,调用forceUpdate仅仅强制重新渲染视图。...最好方法:在组件上进行 key 更改 在许多情况下,我们需要重新渲染组件。 要正确地做到这一点,我们将提供一个key属性,以便 Vue 知道特定组件与特定数据片段相关联。...,则需要重新渲染列表某些部分。...但是,不会希望重新渲染列表所有内容,而只是重新渲染更改内容。 为了帮助 Vue 跟踪更改和未更改内容,我们提供了一个key属性

    7.8K20

    【Web技术】314- 前端组件设计原则

    这也将消除对观察者需求。通过这样设置,直接从其他地方改变分页状态也不会导致重新获取数据副作用。...让我们看看我们是否可以通过提升数据并将事件处理作为 props 传递来解决这个问题,这样组件就可以简单地呈现数据而不会封装任何其他逻辑。...,我们可以获得想要数据,并定义了嵌套列表 onClick 处理函数,以便在父级中传入任何我们想要操作,然后将它们作为 props 传递给顶级组件。...更改 state/props 会导致重新渲染,当发生这种情况时,你需要是 只是重新去渲染经过 diff 之后得到相关元素节点。...在较大、关联很紧密组件中,你可能会发现状态更改会导致在不需要它许多地方重新呈现,这时应用性能就可能会开始受到影响。 你是否会在测试代码所有部分时遇到问题?

    1.3K40

    前端组件设计原则

    这也将消除对观察者需求。通过这样设置,直接从其他地方改变分页状态也不会导致重新获取数据副作用。...让我们看看我们是否可以通过提升数据并将事件处理作为 props 传递来解决这个问题,这样组件就可以简单地呈现数据而不会封装任何其他逻辑。...,我们可以获得想要数据,并定义了嵌套列表 onClick 处理函数,以便在父级中传入任何我们想要操作,然后将它们作为 props 传递给顶级组件。...更改 state/props 会导致重新渲染,当发生这种情况时,你需要是 只是重新去渲染经过 diff 之后得到相关元素节点。...在较大、关联很紧密组件中,你可能会发现状态更改会导致在不需要它许多地方重新呈现,这时应用性能就可能会开始受到影响。 你是否会在测试代码所有部分时遇到问题?

    2.3K30

    前端组件设计原则

    这也将消除对观察者需求。通过这样设置,直接从其他地方改变分页状态也不会导致重新获取数据副作用。...让我们看看我们是否可以通过提升数据并将事件处理作为 props 传递来解决这个问题,这样组件就可以简单地呈现数据而不会封装任何其他逻辑。...,我们可以获得想要数据,并定义了嵌套列表 onClick 处理函数,以便在父级中传入任何我们想要操作,然后将它们作为 props 传递给顶级组件。...更改 state/props 会导致重新渲染,当发生这种情况时,你需要是 只是重新去渲染经过 diff 之后得到相关元素节点。...在较大、关联很紧密组件中,你可能会发现状态更改会导致在不需要它许多地方重新呈现,这时应用性能就可能会开始受到影响。 你是否会在测试代码所有部分时遇到问题?

    1K20

    前端组件设计原则

    这也将消除对观察者需求。通过这样设置,直接从其他地方改变分页状态也不会导致重新获取数据副作用。...让我们看看我们是否可以通过提升数据并将事件处理作为 props 传递来解决这个问题,这样组件就可以简单地呈现数据而不会封装任何其他逻辑。...,我们可以获得想要数据,并定义了嵌套列表 onClick 处理函数,以便在父级中传入任何我们想要操作,然后将它们作为 props 传递给顶级组件。...更改 state/props 会导致重新渲染,当发生这种情况时,你需要是 只是重新去渲染经过 diff 之后得到相关元素节点。...在较大、关联很紧密组件中,你可能会发现状态更改会导致在不需要它许多地方重新呈现,这时应用性能就可能会开始受到影响。 你是否会在测试代码所有部分时遇到问题?

    1.7K20

    SqlAlchemy 2.0 中文文档(七十九)

    这是正确行为,因为如果传入状态包含一个过期版本 id,则应该假设该状态已过期。 如果将数据合并到一个有版本控制状态中,则版本 id 属性可以不定义,并且不会进行版本检查。...这是正确行为,因为如果传入状态包含过时版本 id,则应假定状态是过时。 如果将数据合并到版本化状态中,则可以将版本 id 属性未定义,并且不会进行版本检查。...当id属性被设置为引用parent.id和child.id时,它们被存储在一个有序列表中。这样,诸如Child.id表达式在呈现时只引用其中一个列。直到 0.6 版本,这一列将是parent.id。...这是正确行为,即如果传入状态包含过时版本 ID,则应假定状态是过时。 如果将数据合并到带版本状态中,则可以将版本 ID 属性留空,不会进行版本检查。...当id属性被设置为引用parent.id和child.id时,它们被存储在一个有序列表中。这样,诸如Child.id表达式在呈现时只会引用其中一个列。

    9710

    React基础语法

    一旦被创建,你就无法更改子元素或者属性。一个元素就像电影单帧:它代表了某个特定时刻 UI。...想要更新渲染元素,最简单方式是创建一个全新元素,并将其传入ReactDOM.render()。但在实践中,大多数 React 应用只会调用一次 ReactDOM.render()。...在大多数情况下,这没什么问题,但如果该回调函数作为 prop 传入子组件时,这些组件可能会进行额外重新渲染。...万不得也可使用元素索引index作为key值,但如果列表项目顺序未来可能会发生变化时,则不建议使用索引来作为key值,因为这会导致性能变差,还可能引起组件状态问题。...React 调用 Calculator 组件 render 方法得到组件 UI 呈现。温度转换在这时进行,两个输入框中数值通过当前输入温度和其计量单位来重新计算获得。

    4.9K40

    阿里前端二面常考react面试题(必备)_2023-02-28

    一旦有插入动作,会导致插入位置之后列表全部重新渲染 这也是为什么渲染列表时为什么要使用唯一 key。...(1)props props是一个从外部传进组件参数,主要作为就是从父组件向子组件传递数据,它具有可读性和不变性,只能通过外部组件主动传入props来重新渲染子组件,否则子组件props以及展现形式不会改变...来修改,修改state属性会导致组件重新渲染。...这有助于维护单向数据流,通常用于呈现动态生成数据。 React-Router 4怎样在路由变化时重新渲染同一个组件?...ajax获取到数据然后使用jquery生成dom结果然后更新到页面当中,但是随着业务发展,我们项目可能会越来越复杂,我们每次请求到数据,或则数据有更改时候,我们又需要重新组装一次dom结构,然后更新页面

    2.8K30

    SqlAlchemy 2.0 中文文档(七十三)

    最初,尝试了诸如立即评估表达式并尝试稍后加载值各种简化方法,但困难边缘情况是正在更改属性值(通常是自然主键)。...当值无法评估时,现代属性 API 功能用于指示特定错误消息,这两种情况是当列属性从未设置时,以及当对象在进行第一次评估时已过期并且现在分离。...更改是 b_data 集合现在维护对 a1 对象强引用,以使其保持存在: assert b_data == ["b1", "b2"] 此更改引入了一个副作用,即如果应用程序像上面那样传递集合,父对象在集合被丢弃之前不会被垃圾回收...,以便重新映射额外列,使其不与映射到B现有列发生冲突,同时还需要定义一个新主键。...最初,尝试了诸如立即评估表达式并尝试稍后加载值各种安排等更简单方法,但困难边缘情况是正在更改属性(通常是自然主键)值。

    21010

    Jetpack-Compose 学习笔记(一)—— Compose 初探

    Compose 首先会生成整个屏幕,然后仅仅执行必要更改。...4.4 Compose 列表初探 列表布局使用频率还是比较高,像 ListView 和 RecyclerView 都是耳熟能详用于展示列表 View 控件。...4.5 Compose 自定义主题 Compose 中有自带一些主题,比如 MaterialTheme,被这些 Theme 包裹,就可以呈现出这些 Theme 所设置属性了。...重组就是使用新数据再次调用 Composable 函数,从而进行更新。当然重组过程仅调用可能更改函数或 lambda,而跳过其余函数或 lambda,所以 Compose 可以高效地重组。...(不是很理解,可能日后真正使用后会更有体会吧~欢迎一起讨论) Composable 函数可能会像每一帧一样频繁地重新执行,例如在呈现动画时。

    2.1K10

    OpenGL ES编程指南(三)

    寻找消耗大量内存对象。 简单目标是你应用程序分配帧缓冲区来保存渲染结果。当您应用程序位于后台时,它对用户不可见,并且可能不会使用OpenGL ES呈现任何新内容。...这意味着您应用程序帧缓冲区所消耗内存分配,但无用。而且,帧缓冲器内容是暂时;大多数应用程序每次渲染新帧时都会重新创建帧缓冲区内容。...支持高分辨率显示 默认情况下,GLKit ViewcontentScaleFactor属性值与包含它屏幕比例相匹配,因此将其关联帧缓冲区配置为在显示器全分辨率下呈现。...使用较低比例因子并启用多重采样。另一个优点是多重采样还可以在不支持高分辨率显示设备上提供更高质量。 要为GLKView对象启用多重采样,请更改其drawableMultisample属性值。...您可以在其信息属性列表中为您应用程序声明支持界面方向,或者使用其supportedInterfaceOrientations方法为托管OpenGL ES内容视图控制器声明支持界面方向。

    1.8K10

    前端开发常见面试题,有参考答案

    类似的业务需求也有很多,如一个可以横向滑动列表,当前高亮 Tab 显然隶属于列表自身时,根据传入某个值,直接定位到某个 Tab。...该函数会在replaceState设置成功,且组件重新渲染后调用。总结: setState 是修改其中部分状态,相当于 Object.assign,只是覆盖,不会减少原来状态。...当 ref 属性被用于一个自定义类组件时,ref 对象将接收该组件挂载实例作为他 current。当在父组件中需要访问子组件中 ref 时可使用传递 Refs 或回调 Refs。...来更新你组件状态,旧属性还是可以通过this.props来获取,这里调用更新状态是安全,并不会触发额外render调用。...componentWillReceiveProps在初始化render时候不会执行,它会在Component接受到新状态(Props)时被触发,一般用于父组件状态更新时子组件重新渲染。

    1.3K20
    领券