首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取React-Beautiful-DND和React-Virtualized以协同工作

无法获取React-Beautiful-DND和React-Virtualized以协同工作
EN

Stack Overflow用户
提问于 2021-02-23 16:30:35
回答 1查看 590关注 0票数 0

伙计们,我已经尝试了几天了,但是我一直没能弄明白。我可以让这两个库单独工作,但是当我把两个库组合在一起时,我被困在为什么它不能工作。我想我不知何故把它们连接错了,我就是搞不清楚是什么。请帮帮忙。

已尝试遵循此指南herehere指南的源代码。

Here is a CodeSandBox of my issue

最后,这里是CodeSandBox中重要部分的代码片段:

代码语言:javascript
复制
getRowRender({ index, style }) {
    const item = this.state.items[index];

    return (
      <Draggable draggableId={item.id} index={index} key={item.id}>
        {(provided, snapshot) => (
          <div
            ref={provided.innerRef}
            {...provided.draggableProps}
            {...provided.dragHandleProps}
            style={getItemStyle(
              snapshot.isDragging,
              provided.draggableProps.style
            )}
          >
            {item.content}
          </div>
        )}
      </Draggable>
    );
  }


 render() {
    if (this.state.items) {      
      return (
        <DragDropContext onDragEnd={this.onDragEnd}>
          <Droppable
            droppableId="droppable"
            mode="virtual"
            renderClone={(provided, snapshot, rubric) => (
              <div
                ref={provided.innerRef}
                {...provided.draggableProps}
                {...provided.dragHandleProps}
                style={getItemStyle(
                  snapshot.isDragging,
                  provided.draggableProps.style
                )}
              >
                {this.state.items[rubric.source.index].content}
              </div>
            )}
          >
            {(provided, snapshot) => (
              <AutoSizer>
                {({ height, width }) => (
                  <List
                    {...provided.droppableProps}
                    height={height}
                    rowCount={this.state.items.length}
                    rowHeight={500}
                    width={width}
                    ref={(ref) => {
                      // react-virtualized has no way to get the list's ref that I can so
                      // So we use the `ReactDOM.findDOMNode(ref)` escape hatch to get the ref
                      if (ref) {
                        // eslint-disable-next-line react/no-find-dom-node
                        const whatHasMyLifeComeTo = ReactDOM.findDOMNode(ref);
                        if (whatHasMyLifeComeTo instanceof HTMLElement) {
                          provided.innerRef(whatHasMyLifeComeTo);
                        }
                      }
                    }}
                    style={getListStyle(snapshot.isDraggingOver)}
                    rowRenderer={this.getRowRender}
                  />
                )}
              </AutoSizer>
            )}
          </Droppable>
        </DragDropContext>
      );
    } else {
      return null;
    }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 02:09:00

我想我已经解决了这个问题。

https://codesandbox.io/s/vertical-list-forked-risye

您没有将rowRenderer中的样式属性传递给virtualize,以正确的方式处理您的行。

此外,您的Autosizer没有增长超过高度:0,因为它的父级没有任何样式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66329580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档