ChatGPTNextWeb / ChatGPT-Next-Web

A cross-platform ChatGPT/Gemini UI (Web / PWA / Linux / Win / MacOS). 一键拥有你自己的跨平台 ChatGPT/Gemini 应用。
https://app.nextchat.dev/
MIT License
75.86k stars 58.92k forks source link

[Bug] Chrome 或 Edge控制台显示Warning提示:Warning: Connect(Droppable): Support for defaultProps will be removed from memo components in a future major release. Use JavaScript default parameters instead. #700

Closed DinoFeng closed 1 year ago

DinoFeng commented 1 year ago

Describe the bug Chrome or Edge browser console display: Warning: Connect(Droppable): Support for defaultProps will be removed from memo components in a future major release. Use JavaScript default parameters instead.

To Reproduce 1.打开浏览器 2.按F12 3.点选控制台 4.地址栏输入(localhost:3000) 5.网页加载时控制台显示:(Chrome) image

Expected behavior 控制台应该没有任何Warning或Error的提示

Screenshots 以下是Edge截图: image

Deployment

Desktop (please complete the following information):

Yidadaa commented 1 year ago

正常,react-dnd 库的报错,不影响使用。

waltcow commented 1 year ago

it seems very annoying in console

DinoFeng commented 1 year ago

@Yidadaa 这个Warning来自@hello-pangea/dnd 当我用div替换下DragDropContext,Droppable,Draggable问题解决。 是否有其他可以拖拉的第三方控件?或者这个Chat-list是否有拖拉的必要? chat-list.tsx

import DeleteIcon from "../icons/delete.svg";
import styles from "./home.module.scss";
// import {
//   DragDropContext,
//   Droppable,
//   Draggable,
//   OnDragEndResponder,
// } from "@hello-pangea/dnd";

import { useChatStore } from "../store";

import Locale from "../locales";
import { isMobileScreen } from "../utils";

export function ChatItem(props: {
  onClick?: () => void;
  onDelete?: () => void;
  title: string;
  count: number;
  time: string;
  selected: boolean;
  id: number;
  index: number;
}) {
  return (
    <div id={`${props.id}`}>
        <div
          className={`${styles["chat-item"]} ${
            props.selected && styles["chat-item-selected"]
          }`}
          onClick={props.onClick}
        >
          <div className={styles["chat-item-title"]}>{props.title}</div>
          <div className={styles["chat-item-info"]}>
            <div className={styles["chat-item-count"]}>
              {Locale.ChatItem.ChatItemCount(props.count)}
            </div>
            <div className={styles["chat-item-date"]}>{props.time}</div>
          </div>
          <div className={styles["chat-item-delete"]} onClick={props.onDelete}>
            <DeleteIcon />
          </div>
        </div>
    </div>
  );
}

export function ChatList() {
  const [sessions, selectedIndex, selectSession, removeSession, moveSession] =
    useChatStore((state) => [
      state.sessions,
      state.currentSessionIndex,
      state.selectSession,
      state.removeSession,
      state.moveSession,
    ]);
  const chatStore = useChatStore();

  // const onDragEnd: OnDragEndResponder = (result) => {
  //   const { destination, source } = result;
  //   if (!destination) {
  //     return;
  //   }

  //   if (
  //     destination.droppableId === source.droppableId &&
  //     destination.index === source.index
  //   ) {
  //     return;
  //   }

  //   moveSession(source.index, destination.index);
  // };

  return (
    <div>
      <div id="chat-list">
        <div className={styles["chat-list"]}>
          {sessions.map((item, i) => (
            <ChatItem
              title={item.topic}
              time={item.lastUpdate}
              count={item.messages.length}
              key={item.id}
              id={item.id}
              index={i}
              selected={i === selectedIndex}
              onClick={() => selectSession(i)}
              onDelete={() => chatStore.deleteSession(i)}
            />
          ))}
        </div>
      </div>
    </div>
  );
}
Yidadaa commented 1 year ago

拖拽排序对很多人是有必要的,所以为什么对这个 warning 这么念念不忘?你把控制台的 log 展示等级调成仅 log 不就行了?

DinoFeng commented 1 year ago

@Yidadaa , hello-pangea/dnd已经fix了,等更新 https://github.com/hello-pangea/dnd/issues/450