更新单个元素后,更新的元素在我的UI中显示两次,发现它来自并发现它被拖动到

时间:2017-08-14 20:36:54

标签: javascript reactjs redux react-redux

我有我的应用程序的主屏幕,其中有许多不同的部分。用户可以将element从部分拖到部分。

我遇到的问题是,一旦用户将一个元素拖放到一个新的部分(使用更新的信息击中服务器),该元素将显示两次,一次出现在它的位置开始,一次在拖到的地方。

刷新我的应用后,它只显示在被拖动的位置,这是正确的。

我认为问题出在我的recieveElement reducer中,在服务器更新后会被点击。

在调试时会有一些帮助。谢谢!

   case 'receiveElement':
        const elementId = `${action.element.id}`;

        // don't add, duplicate
        const newState = {...state}; // copy old state
        delete newState[elementId]; // delete the item from the object

        const newVisibleElementIds = newState.visibleElements.filter(id => id !== elementId); // remove item from visible elements
        const newUnplacedElementIds = newState.unplacedElements.filter(id => id !== elementId);

        return {
            ...newState,
            elementsMap: {
                ...newState.elementsMap,
                [elementId]: action.element,
            },
            visibleElements: [...newVisibleElementIds, elementId],
            unplacedElements: [...newUnplacedElementIds],
        };

在我的SkyElement反应对象中,我有以下内容,这是在命中减速器之前命中服务器

endDrag(props, monitor) {
        if (monitor.didDrop()) {
            const result = monitor.getDropResult();
        if (result.sectorId) {
            const obj = { id: props.id, sectorId: result.sectorId, slotId: result.slotId };

            props.dispatch(requestUpdateElement(obj));
        }
    }
},

0 个答案:

没有答案