Jadual Kandungan
Analisis keperluan
Pelaksanaan fungsi
Kaedah rekursif
Menu klik kanan tetikus
Tambah/ubah suai/padam fungsi
Fungsi carian
Seret dan gerakkan disokong oleh komponen Pokok itu sendiri, dan pegawai telah memberikan
Kesukaran mencari dan kedudukan terbalik sebenarnya Apabila membuka folder yang berkaitan, atribut autoExpandParent digunakan dalam contoh rasmi, yang menjadikannya lebih mudah.
Rumah hujung hadapan web Soal Jawab bahagian hadapan Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Jan 13, 2022 pm 06:28 PM
ant design

Bagaimana untuk menyesuaikan komponen pokok Reka Bentuk Semut untuk melaksanakan fungsi penyuntingan, carian dan kedudukan terbalik? Artikel berikut akan memperkenalkan kepada anda cara membuat komponen pokok dan melaksanakan fungsi ini. Saya harap ia akan membantu anda!

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Kali ini saya membuat fungsi paparan berbentuk pokok Tanpa diduga, produk itu masih belum selesai dan datang untuk bercakap dengan saya:

PD. : Apa? Hanya kembangkan dan runtuhkan fungsi? Bagaimana ini boleh berfungsi? Perkara paling asas kami adalah untuk menyokong penyuntingan dan carian Jika boleh, kami juga boleh melakukan kedudukan terbalik...

YY: Mengapa anda tidak memberitahu saya lebih awal. ? Tiada apa-apa dalam dokumen keperluan...

PD: Dokumen siapa yang anda fikir ditulis di tempat sekali? PD mana yang tidak menambah keperluan?

YY: Itulah yang mereka katakan, tetapi itu bukan cara ia berfungsi...

PD: Oh, jangan buang masa anda , buat cepat!

YY: ...

Cerita-cerita di atas adalah rekaan semata-mata Jika ada persamaan, sila tinggalkan mesej di ruangan komen...

Data bentuk pokok agak biasa dalam pembangunan, seperti folder, struktur organisasi, klasifikasi biologi, negara dan wilayah, dsb. Kebanyakan struktur di dunia adalah struktur pokok. Kawalan pokok boleh memaparkan sepenuhnya perhubungan hierarki, dan mempunyai fungsi interaktif seperti pemilihan pengembangan dan runtuh.

Analisis keperluan

  • Edit: tambah/ubah suai/padam/pindah
  • Fungsi carian: nama/pencipta/penapis pemilik
  • Kedudukan: tab kedudukan terbalik

Repositori projek: https://github.com/speakice/editable-tree

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Pelaksanaan fungsi

Terdapat banyak perpustakaan kaedah dan komponen yang boleh mencapai fungsi di atas Di sini kita hanya bercakap tentang salah satu daripadanya, yang kesemuanya merupakan komponen Reka Bentuk Semut:

  • Pokok direktori Tree.DirectoryTree
  • Turun Turun Bekas menu klik kanan
  • Kandungan menu menu
  • Halaman tab kanan tab
  • Kotak carian Input.Cari
  • Tukar status persatuan suis
  • shortid menjana id unik
import { Tree, Dropdown, Menu, Tabs, Input, Switch } from 'antd';import shortid from 'shortid';复制代码

Kaedah rekursif

Untuk mengendalikan data baris pepohon, prasyarat yang paling penting ialah mempunyai kaedah rekursif yang berguna:

/**
 * 如果需要修改tree,action就返回修改后的item, 不修改就不返回
 */export const deepTree = (tree = [], action = () => {}) => {  return tree.map((item) => {    const newItem = action({ ...item }) || item;    if (newItem.children) {
      newItem.children = deepTree(newItem.children, action);
    }    return newItem;
  });
};复制代码

Menu klik kanan berfungsi pada tajuk, dan Dropdown perlu ditulis pada sumber data komponen pepohon:

    <directorytree> setRightClickKey(node.key)}
          onSelect={onSelect}
          selectedKeys={rightConnect ? [activeTabKey] : selectedKeys}
          onExpand={onExpand}
          treeData={[
            ...deepTree(treeData, (item) => {              return {
                ...item,                titleWord: item.title,                title: (                  <dropdown> setRightClickKey()}
                    overlayStyle={{ width: 80 }}
                    overlay={menu(item)}
                  >                    <div>
                      {item.title}                    </div>                  </dropdown>
                ),
              };
            }),
          ]}
        />复制代码</directorytree>

Di sana ialah beberapa perkara mengenai menu klik kanan yang perlu ditambah:

  • Atribut pencetus Dropdown perlu ditetapkan kepada contextMenu;
  • Kedudukan yang dipaparkan oleh Dropdown adalah relatif kepada tajuk, dan lebar bekas luar perlu ditetapkan untuk mengisi ruang yang tinggal:
.ant-tree-node-content-wrapper {  display: flex;
}.ant-tree-title {  flex: 1;
}复制代码
  • Paparan Dropdown dinilai dengan mengklik kanan kekunci yang direkodkan;
  • Menu Dropdown perlu menghantar item semasa;
  const menu = (node) => (    <menu> {
        domEvent.stopPropagation();
        console.log('menuClick', node, key);
        // 如果要添加操作顶层文件夹,可以直接操作
        switch (key) {
          case 'add':
            setTreeData(
              deepTree(treeData, (item) => {
                if (item.children && item.key === node.key) {
                  return {
                    ...item,
                    children: [
                      ...item.children,
                      {
                        title: 'new add',
                        key: shortid.generate(),
                        isLeaf: true,
                      },
                    ],
                  };
                }
              })
            );
            break;
          case 'delete':
            const outer = treeData.find((item) => item.key === node.key);
            if (outer) {
              setTreeData(treeData.filter((item) => item.key !== node.key));
              return;
            }
            setTreeData(
              deepTree(treeData, (item) => {
                if (item.children) {
                  return {
                    ...item,
                    children: item.children.filter(
                      ({ key }) => key !== node.key
                    ),
                  };
                }
                return item;
              })
            );
            break;
          case 'edit':
            setTreeData(
              deepTree(treeData, (item) => {
                if (item.key === node.key) {
                  console.log('editle', {
                    ...item,
                    title: 'new edit',
                  });
                  return {
                    ...item,
                    title: 'new edit',
                  };
                }
                return item;
              })
            );
            break;
        }
      }}
    >      <menu.item>新增</menu.item>      <menu.item>
        删除      </menu.item>      <menu.item>编辑</menu.item>    </menu>
  );复制代码

Tambah/ubah suai/padam fungsi

Tambah fungsi hanya boleh ditambahkan pada folder dengan lalai, dan penambahan dinilai oleh nilai utama Pemprosesan di sini agak mudah, hanya demonstrasi fungsi teras dilakukan, kod ditunjukkan dalam bahagian sebelumnya;

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Fungsi pengubahsuaian juga telah diberikan contoh mudah Dalam projek formal, biasanya perlu untuk menyunting tetingkap timbul atau membenamkan kotak input dalam tajuk komponen pokok Anda boleh menggunakan pembolehubah untuk merekodkan item yang sedang diedit. , dan akhirnya simpan dan masukkannya ke dalam data pokok melalui rekursi:

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Fungsi pemadaman membuat pertimbangan Jika lapisan paling luar dipadamkan, ia ditapis terus melalui penapis , ⚠️ Jika tidakfungsi pemadaman ditapis oleh kanak-kanak, sila beri perhatian khusus di sini.

Fungsi carian

Fungsi carian digesa oleh warna titile bertukar merah:

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Pelaksanaan hanya selepas mengklik untuk mencari Carian , tiada gesaan carian masa nyata dan tiada perbezaan perkataan carian Di sini anda boleh memintas rentetan untuk dilaksanakan, anda boleh melihat Contoh rasmi, Perhatikan bahawa atribut lalai induk. nod ialah autoExpandParent , jika tidak, ia mungkin memerlukan sedikit usaha untuk mengulangi ke atas.

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan

Terdapat juga keperluan untuk menapis sumber data, yang boleh dicapai dengan hanya mengubah suai contoh rasmi; kedudukan terbalik

Klik pada item komponen Pokok, tambah Tab di sebelah kanan, atau aktifkan Tab, yang boleh dianggap sebagai kedudukan terbalik bermakna apabila halaman Tab di sebelah kanan ditukar, komponen Pokok di sebelah kiri memilih item yang sepadan, dan kod teras ditentukan SelectedKeys tidak sukar untuk dibandingkan.

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukanSeret dan gerakkan

Seret dan gerakkan disokong oleh komponen Pokok itu sendiri, dan pegawai telah memberikan

contoh seret dan gerakkan

, saya hanya mengubah suai sedikit contoh rasmi, jadi saya tidak akan pergi ke butiran di sini:

Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukanTamat

Kesukaran mencari dan kedudukan terbalik sebenarnya Apabila membuka folder yang berkaitan, atribut autoExpandParent digunakan dalam contoh rasmi, yang menjadikannya lebih mudah.

Tidak terlalu awal, kami berada di sini hari ini.

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati:

Video Pengaturcaraan

! !

Atas ialah kandungan terperinci Reka Bentuk Semut mencipta komponen pokok untuk melaksanakan fungsi pengeditan, carian dan kedudukan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1535
276
Rendering sisi pelayan dengan Next.js dijelaskan Rendering sisi pelayan dengan Next.js dijelaskan Jul 23, 2025 am 01:39 AM

Server-siderendering (ssr) innext.jsgenerateshtmlontheserverforachrequest, InfrovingPormanceAndSeo.1.ssrisidealfordynamiccontentthatchangesfrequents, suchasuserdashboard

Menyelam mendalam ke webassembly (WASM) untuk pemaju depan Menyelam mendalam ke webassembly (WASM) untuk pemaju depan Jul 27, 2025 am 12:32 AM

WebAssembly (WASM) isagame-changerforfront-enddevelopersseekinghigh-performanceWebapplications.1.wasmisabinaryInstructionFatThatRunsatnear-nativespeed, enablinglanguageslikerust, c, andgoexecuteinthebrowser.2.itreBrowser.2.itreBrowser.2

Memahami Corak Delegasi Acara JavaScript Memahami Corak Delegasi Acara JavaScript Jul 21, 2025 am 03:46 AM

Delegasi acara adalah teknik yang menggunakan mekanisme gelembung peristiwa untuk menyerahkan pemprosesan peristiwa elemen kanak -kanak kepada elemen induk. Ia mengurangkan penggunaan memori dan menyokong pengurusan kandungan dinamik dengan mengikat pendengar pada elemen induk. Langkah -langkah khusus adalah: 1. 2. Gunakan Event.Target untuk menentukan unsur -unsur kanak -kanak yang mencetuskan peristiwa dalam fungsi panggil balik; 3. Melaksanakan logik yang sepadan berdasarkan unsur -unsur kanak -kanak. Kelebihannya termasuk meningkatkan prestasi, memudahkan penyelenggaraan kod dan menyesuaikan diri dengan unsur -unsur yang ditambah secara dinamik. Apabila menggunakannya, anda harus memberi perhatian kepada sekatan gelembung peristiwa, elakkan pemantauan berpusat yang berlebihan, dan dengan munasabah memilih elemen induk.

Pengurusan Negeri Pertunjukan Pertama dengan Zustand Pengurusan Negeri Pertunjukan Pertama dengan Zustand Jul 25, 2025 am 04:32 AM

Zustandisalisightweight, PerformantStateManagementsolutionForreActAppsthatavoidsredux'sboilerplate; 1.useSelectiveStateslicingtopreventunnessaryre-rendersbyselecselectingonlytheneedstateProperty;

Apakah tujuan atribut REL dalam tag pautan dalam HTML? Apakah tujuan atribut REL dalam tag pautan dalam HTML? Aug 03, 2025 pm 04:50 PM

rel = "stylesheet" linkscssfilesforstylingthepage; 2.rel = "preload" hintStopreloadcriticalResourcesforperformance; 3.rel = "ikon" setSthewebsite'sfavicon; 4.rel = "alternate" menyediakan

Apakah tujuan atribut sasaran tag utama dalam HTML? Apakah tujuan atribut sasaran tag utama dalam HTML? Aug 02, 2025 pm 02:23 PM

ThetTargetTatTributeNanHtmlancHortAragspecifiesWherEtoopentHelinkedDocument.1._SelFopensTheLinkIndesAmetAB

Pengoptimuman Masa Membina Frontend Pengoptimuman Masa Membina Frontend Jul 23, 2025 am 03:37 AM

Inti mengoptimumkan masa membina front-end adalah untuk mengurangkan kerja yang berlebihan, meningkatkan kecekapan pemprosesan, menggunakan cache dan memilih alat yang cekap. 1. Gunakan Treeshaking dan Segmentation Code dengan munasabah untuk memastikan ia diperkenalkan pada permintaan dan import dinamik mengurangkan jumlah pembungkusan; 2. Mengurangkan pemprosesan loader yang tidak perlu, tidak termasuk node_modules, loaders menaik taraf dan berehat skop terjemahan Babel; 3. Gunakan mekanisme caching untuk mempercepat pembinaan berulang, membolehkan cache webpack, cache CI dan menggunakan pemasangan luar talian; 4. Menaik taraf toolchain, seperti menggunakan Vite, Esbuild atau Rollup untuk meningkatkan kelajuan pembinaan, walaupun terdapat kos penghijrahan, ia mempunyai kesan yang signifikan.

Memahami dan melaksanakan OAuth 2.0 di bahagian depan Memahami dan melaksanakan OAuth 2.0 di bahagian depan Jul 25, 2025 am 04:31 AM

Apabila menggunakan OAuth 2.0, proses kod kebenaran PKCE harus diterima pakai dan bukannya proses tersirat, elakkan menyimpan token di localStorage di hujung depan, keutamaan diberikan untuk memproses token menyegarkan melalui hujung belakang, dan integrasi selamat dicapai dengan menggunakan perpustakaan pengesahan yang dipercayai untuk memastikan keselamatan aplikasi depan.

See all articles