首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactJS kanban不拖拽(@lourenci/react kanban)

ReactJS kanban不拖拽(@lourenci/react kanban)
EN

Stack Overflow用户
提问于 2022-06-01 11:49:56
回答 1查看 287关注 0票数 0

我试着用这个库“@lourenci/ react kanban”制作一个简单的kanban板。

我遵循了他们在github页面( https://codesandbox.io/s/react-kanban-demo-nvjp3?file=/src/index.js:141-163)上提出的例子,但问题是,我可以获得板,但我的卡不能移动。就像没有创建拖放一样。

代码语言:javascript
复制
import ContentBody from '../../components/layout/content-body';
import Sidebar from '../../components/layout/sidebar';
import TitleBar from '../../components/layout/titlebar';
import CircularProgress from '@mui/material/CircularProgress';
import Typography from '@mui/material/Typography';
import { Navigate, useParams } from "react-router-dom";

import kanbanService from '../../services/kanban.service';

import Board, { moveCard } from "@lourenci/react-kanban";
import "@lourenci/react-kanban/dist/styles.css";

const initialBoard = {
    columns: [
        {
          id: 1,
          title: "Backlog",
          cards: [
            {
              id: 1,
              title: "Card title 1",
              description: "Card content"
            },
            {
              id: 2,
              title: "Card title 2",
              description: "Card content"
            },
            {
              id: 3,
              title: "Card title 3",
              description: "Card content"
            }
          ]
        },
        {
          id: 2,
          title: "Doing",
          cards: [
            {
              id: 9,
              title: "Card title 9",
              description: "Card content"
            }
          ]
        },
        {
          id: 3,
          title: "Q&A",
          cards: [
            {
              id: 10,
              title: "Card title 10",
              description: "Card content"
            },
            {
              id: 11,
              title: "Card title 11",
              description: "Card content"
            }
          ]
        },
        {
          id: 4,
          title: "Production",
          cards: [
            {
              id: 12,
              title: "Card title 12",
              description: "Card content"
            },
            {
              id: 13,
              title: "Card title 13",
              description: "Card content"
            }
          ]
        }
      ]
};
  
export default function KanbanBoard({setShowLoader, showMessageError, showMessageSuccess}) {
    const { id } = useParams();
    const [isLoaded, setIsLoaded] = React.useState(true);
    const [error, setError] = React.useState(null);
    const [lists, setLists] = React.useState([]);
        
    const [board, setBoard] = React.useState(initialBoard);

    function onCardMove(card, source, destination) {
        const updatedBoard = moveCard(board, source, destination);
        setBoard(updatedBoard);
         
        console.log("----------");
        console.log(card);
        console.log(source);
        console.log(destination);
        console.log(updatedBoard);
      }

    const fetchBoard = async () => {
        kanbanService.getBoard(id)
        .then(
            (result) => {
                result = result.data;
                setIsLoaded(true);
                setBoard(result);
                fetchLists();
            },
            (error) => {
                setIsLoaded(true);
                setError(error);
            }
        )
    }

    const fetchLists = async () => {
        kanbanService.getLists(id)
        .then(
            (result) => {
                result = result.data;
                setIsLoaded(true);
                setLists(result);
            },
            (error) => {
                setIsLoaded(true);
                setError(error);
            }
        )
    }

    React.useEffect(() => {
        //setIsLoaded(false);
        //fetchBoard();
    },[])

    return(
        <>
            <Sidebar setShowLoader={setShowLoader}>
                <TitleBar title={board.board_name}>
                </TitleBar>
                <ContentBody usePadding={true}>
                {(error)  ? (
                    <div > 
                        <Typography variant="subtitle1" gutterBottom component="div" style={{color:"red"}}>
                            <strong>Errore:</strong> {error.message}
                        </Typography> 
                    </div>
                ):(
                    !isLoaded ? (
                        <div style={{padding:"30px"}}><CircularProgress /></div>
                    ) : (
                        <>
                            <Board 
                                onCardDragEnd={onCardMove} 
                                disableColumnDrag
                            >
                            {board}
                            </Board>
                        </>
                    )
                )}
                </ContentBody>
            </Sidebar>
        </>
    )
}

我已经安装了npm的软件包,使用param -强制,因为我认为有一些问题的反应18。也许这就是问题所在?但其他用户也安装在反应反应18没有麻烦。

你有主意吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-06-11 11:34:32

我能想到的一件事就是严格的模式。董事会是如何呈现的,就像这样?

代码语言:javascript
复制
root.render(
  <React.StrictMode>
    <KanbanBoard />
  </React.StrictMode>
);

这似乎是反应-美丽-dnd的一个问题,如这里所示,问题2399

删除严格模式时,拖放是否工作?

代码语言:javascript
复制
root.render(
  <KanbanBoard />
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72461377

复制
相关文章

相似问题

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