- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
包装我的虚拟列表时 <FixedSizeList>
组件(react-beautiful-dnd + react-window)带有 <AutoSizer>
组件 (react-virtualized-auto-sizer) 我收到以下错误:
react-beautiful-dnd
A setup problem was encountered.
Invariant failed: provided.innerRef has not been provided with a HTMLElement.
<FixedSizeList>
,则不会发生该错误组件与
<AutoResizer>
并提供硬编码值。
import { Draggable, Droppable } from "react-beautiful-dnd";
import { FixedSizeList } from "react-window";
import AutoSizer from "react-virtualized-auto-sizer";
import ListItem from "./ListItem";
import React, { memo, useCallback } from "react";
const List = ({
ID,
data
}) => {
const listItemRenderer = useCallback(({ data, index, style }) => {
const item = (data && data[index]);
if (!item) {
return null;
}
return (
<Draggable
key={item.ID}
draggableId={item.ID}
index={index}
>
{(provided) =>
<ListItem
data={item}
draggableProvided={provided}
virtualStyle={style}
/>
}
</Draggable>
);
}, []);
return (
<Droppable
droppableId={ID}
mode={"virtual"}
renderClone={(provided, snapshot, rubric) => (
<ListItem
data={data[rubric.source.index]}
draggableProvided={provided}
isDragging={snapshot.isDragging}
/>
)}
>
{(provided, snapshot) => {
const dataLength = (data)
? data.length
: 0;
const itemCount = (snapshot.isUsingPlaceholder)
? dataLength + 1
: dataLength;
return (
<AutoSizer> //Error here caused by wrapping <FixedSizeList> with <AutoSizer>
{({ width, height }) => (
<FixedSizeList
width={width} //AutoSizer supplied value
height={height} //AutoSizer supplied value
itemSize={100}
itemCount={itemCount}
itemData={data}
outerRef={provided.innerRef}
>
{listItemRenderer}
</FixedSizeList>
)}
</AutoSizer>
);
}}
</Droppable>
);
};
export default memo(List);
import React, { memo } from "react";
const ListItem = ({
data,
draggableProvided,
virtualStyle
}) => {
return (
<div
{...draggableProvided.draggableProps}
{...draggableProvided.dragHandleProps}
ref={draggableProvided.innerRef}
style={{
...draggableProvided.draggableProps.style,
...virtualStyle
}}
>
{data.name}
</div>
);
};
export default memo(ListItem);
最佳答案
我挖了 AutoSizer 组件来寻找答案。
该错误已被记录,因为 children
自 width
以来,AutoSizer HOC 的属性没有被渲染和 height
值为 0
.这也是为什么一切仍然正常运行的原因,如 width
和 height
状态值最终被更新,但仅在初始渲染之后。
AutoSizer (index.esm.js):
// Avoid rendering children before the initial measurements have been collected.
// At best this would just be wasting cycles.
var bailoutOnChildren = false;
if (!disableHeight) {
if (height === 0) {
bailoutOnChildren = true;
}
outerStyle.height = 0;
childParams.height = height;
}
if (!disableWidth) {
if (width === 0) {
bailoutOnChildren = true;
}
outerStyle.width = 0;
childParams.width = width;
}
return createElement(
'div',
{
className: className,
ref: this._setRef,
style: _extends({}, outerStyle, style) },
!bailoutOnChildren && children(childParams)
);
因此,解决方案是供应
defaultWidth
和
defaultHeight
props 具有非零值以确保组件在安装时呈现,尽管具有非自动大小:
//...
return (
<AutoSizer
defaultWidth={1}
defaultHeight={1}
>
{({ width, height }) => (
<FixedSizeList
width={width}
height={height}e
itemSize={100}
itemCount={itemCount}
itemData={data}
outerRef={provided.innerRef}
>
{listItemRenderer}
</FixedSizeList>
)}
</AutoSizer>
);
关于javascript - 使用 AutoSizer 包装 React-Beautiful-DND + React-Window 虚拟列表时遇到的设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62460388/
我正在使用 Autosize自动调整文本框的大小(高度)。该插件是 JS,但可以用作 jQuery 插件(在网站中有说明)。作者解释了如何在使用 JavaScript 更改文本时触发手动“更新”事件
创建ScatterChart时,我的左侧和底部总是有这个多余的空白,我想将其删除。 这是我的代码。 xAxis.autosize()和yAxis.autosize()不变。 vbox { ad
我在 Delphi XE2 中编写了代码,运行完美。但在Delphi XE6中它不起作用。我创建了一个 Tform,其属性 AutoSize 为 true。我使用 TPanel 将 alTop 与按钮
我正在研究一个 UserControl,它由一组水平排列在 flowlayoutpanel 中控件顶部的 ComboBoxes 和一个位于 flowlayoutpanel 正下方的 datagridv
我有一个表单,通过将 AutoSize 设置为 true 和 AutoSizeMode 到 GrowAndShrink。 初始化后,我希望窗体取得控制权并关闭 AutoSizing 并使 UserCo
据我了解,遵循 documentation ,HOC 是一个接受一个组件并返回一个新组件的函数。一个例子是来自react-redux的connect函数: connect(mapStateToProp
我使用jQuery Autosize我不知道如何使用回调。这是我的尝试: $('#selector').autosize({callback: function myfunc()}); functio
我在应用程序退出时存储列宽并在启动时恢复它们。除非用户双击标题,否则一切正常。这会导致列宽变为 double.NaN,据我所知这是一个用于自动调整大小的标志。那我就有问题了。 在调查该问题时,我注意到
我想在运行时布局控件(动态创建)。出于这个问题的目的,让我们限制为 Button 控件。我想设置控件的属性(例如 Text),然后确定控件的最小尺寸以使其正常显示;设置 AutoSize = true
在自定义 Windows 窗体控件上实现自动调整大小的最佳做法是什么?例如,自定义 Label 控件继承自 System.Windows.Forms.Label 类。 MSDN 上的 Control.
我正在为 iOS 8+ 编写代码。 我有一个 UICollectionReusableView 用作 UICollectionView 的标题 class UserHeader: UICollecti
我想在自定义控件(不是 用户控件)中实现 AutoSize 属性,其行为方式与在设计中实现 AutoSize(ala CheckBox)的其他标准 .NET WinForms 控件一样模式。 我已经设
我在 Windows.Form 上有一个标签。我将标签上的 AutoSize 属性设置为 True,我注意到当我这样做时,它会用 ~5px 的白色背景填充右侧。我将 Padding 属性设置为 [0,
我正在 FlowLayoutPanel 中动态加载图像。我需要此面板自动调整大小,但只能垂直调整。 这是否可能?如果可能,我该如何实现? 最佳答案 简单,添加一个类型控件的事件已添加: private
我使用 jQuery Autosize 插件: http://www.jacklmoore.com/autosize/ 您可以在此处看到脚本本身: http://www.jacklmoore.com/
我只是误解了 Editor-control 上的名称“AutoSize”-property 还是它根本不起作用? 我在 xaml 中有一个这样的控件: 在高度为 100 时效果很好,但是当我写了几行
如何在设计器模式下防止 Label 控件自动换行,同时它的自动大小设置为 false? 基本上我想在设计器模式下自由移动和调整标签大小,但它的文本应该始终在一行中(如果需要剪切)。 感谢您的帮助! 最
我有一个位于屏幕右下角的 UIImageView,每次用户按下按钮时,它都会向左移动几个点。当图像到达屏幕的另一侧时,我使用 if 语句将其放回右侧。我关闭了自动布局并使用以下选项自动调整大小: 因此
有没有一种方法可以找到使用 AutoSize=true 调整自身大小的表单的实际大小? 例如,我有一个在运行时创建 Controller 的表单,我希望将一些 Controller 放置在相对于表单大
据我所知,如果将 collectionviewlayout 的 estimatedItemSize 设置为非零值,将开始自动调整大小,但它对我不起作用. 您可以获得工作副本here如果你想玩它。 最佳
我是一名优秀的程序员,十分优秀!