Ant Design of Transfer 不在右侧显示初始值

Ant Design of Transfer doesn't show Initial value in right side

我指的是 this 实施转移列表。

但是即使我按照上面的方法做了,右边也没有显示初始值。
我一整天都在面对这个问题。

这是我的代码。

export default function UsersDetailPage(props: { project_id: number }) {

  const [leftDetailSkill, setLeftDetailSkill] = React.useState<[]>([]);
  function changeLeftDetailSkill(skill: React.SetStateAction<[]>) {
    setLeftDetailSkill(skill);
  }
  const [rightDetailSkill, setRightDetailSkill] = React.useState<[]>([]);
  function changeRightDetailSkill(skill: React.SetStateAction<[]>) {
    setRightDetailSkill(skill);
  }

...
  return (
          <ProjectInput
            WrapData={{
              rightSkill: rightDetailSkill,
              changeRightSkill: changeRightDetailSkill,
              leftSkill: leftDetailSkill,
              changeLeftDetailSkill: changeLeftDetailSkill,
            }}
          />
  )
export default function ProjectInput(props: ProjectInputProps) {
  return (
          <PrTransferListSkills
            {...{
              items: props.WrapData.leftSkill,
              rightSkill: props.WrapData.rightSkill,
              changeRightSkill: props.WrapData.changeRightSkill,
              changeLeftDetailSkill: props.WrapData.changeLeftDetailSkill,
            }}
          />
...
import { Transfer } from "antd";

const TransferListComponent = React.memo((props: TransferListProps) => {
  const tmpRight: any = [];
  const tmpLeft: any = [];

  const handleChange = (value: any) => {
    props.changeRightSkill(value);
  };

  const getMock = () => {
    axios
      .get(`${process.env.NEXT_PUBLIC_ENDPOINT}/admin/pr_detail_data/`, {
      ...
      })
      .then((response) => {
        response.data.project_key.map((value: []) => {
          tmpRight.push(value);
        });
        response.data.detail_skills.map((value: []) => {
          tmpLeft.push(value);
        });

        props.changeLeftDetailSkill(tmpLeft);
        props.changeRightSkill(tmpRight);
      })
      .catch(() => {});
  };

  useEffect(() => {
    getMock();
  }, []);

  return (
    <Transfer
      showSearch
      dataSource={props.items}
      render={(item) => item.name}
      targetKeys={props.rightSkill}
      onChange={handleChange}
    />
  );
});

export default function PrTransferListSkills(props: TransferListProps) {
  return (
    <TransferListComponent
      {...{
        items: props.items,
        changeLeftDetailSkill: props.changeLeftDetailSkill,
        rightSkill: props.rightSkill,
        changeRightSkill: props.changeRightSkill,
      }}
    />
  );
}

使用 axios 我将像 [1, 4] 一样获取 number[][{id: 2 , key:2, name: "Javascript"}] 作为 {id: number, key: number, name: string}[]

从上面的代码来看,左侧的传递和初始值都可以。

enter image description here

但是在显示器挂载时右侧的初始值不显示。
我认为如果右侧的初始值为 number or string[] 它应该显示对应于 key.

的值

让我显示一下右侧的初始值。

0: 1
1: 4
length: 2

那么如果我从左边传一个值,这个值就是:

0: 2
1: 1
2: 4
length: 3

但是该值仅显示 0: 2
实在想不通该怎么办..

幸运的是左侧数据..
左侧数据必须包含右侧数据。

这就是未显示初始值的原因。

  • 之前

left-side data

{
id: 3
key: 3
name: example3
},
]

right-side data

[1,2]
  • 之后

left-side data

{
id: 1
key: 1
name: example1
},
{
id: 2
key: 2
name: example2
},
{
id: 3
key: 3
name: example3
},
]

right-side data

[1,2]