React.js拖放 - Drop上的无限循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React.js拖放 - Drop上的无限循环相关的知识,希望对你有一定的参考价值。

我有一个拖放方法的表,一切正常,除了Drop。因此,当我想将项目放入表格的单元格时,会出现由无限循环引起的错误。

如果有人能解释这个错误的原因,我将不胜感激。

import React, {Component} from 'react';
import { DropTarget } from 'react-dnd';


function collect(connect, monitor) {
    return {
        connectDropTarget: connect.dropTarget,
        isOver: monitor.isOver,
        item: monitor.getItem,

    }
}

class DropCells extends Component {
    state = {
        tdValue: ""
    };
    render() {
        const { connectDropTarget, isOver, item} = this.props;
        const backgroundColor = isOver ? 'lightgreen' : 'white';
        const dropped = isOver?  this.setState({tdValue: this.props.item}): this.state.tdValue;
        return connectDropTarget(
            <td className="target" style={{ background: backgroundColor }}>
                 {dropped}
            </td>
        );
    }
}

export default DropTarget('item', {}, collect)(DropCells);
答案

你可以在渲染函数中调用this.setState({tdValue: this.props.item})。每次重新渲染组件时,它都会调用this.setState,这将触发另一个渲染。

以上是关于React.js拖放 - Drop上的无限循环的主要内容,如果未能解决你的问题,请参考以下文章

超过最大更新深度。使用 TimePickerInput onChange 事件 React.js 时的无限循环

基于H5实现的react拖拽排序组件

H5简单拖放(Drag/Drop)

react.js 的触摸支持拖放

Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)

使用 jQuery UI 拖放:更改拖放的元素