svelte5中使用react组件
在svelet5中导入并使用react组件库, 示例项目地址:https://github.com/shenshouer/my-svelte-react
在svelte5中当前还有问题,无法将children传递到react中渲染
使用svletkit创建项目
$ npx sv create my-svelte-react % npx sv create my-svelte-react ┌ Welcome to the Svelte CLI! (v0.6.10) │ ◇ Which template would you like? │ SvelteKit minimal │ ◇ Add type checking with Typescript? │ Yes, using Typescript syntax │ ◆ Project created │ ◇ What would you like to add to your project? (use arrow keys / space bar) │ none │ ◇ Which package manager do you want to install dependencies with? │ pnpm │ ◆ Successfully installed dependencies │ ◇ Project next steps ─────────────────────────────────────────────────────╮ │ │ │ 1: cd my-svelte-react │ │ 2: git init && git add -A && git commit -m "Initial commit" (optional) │ │ 3: pnpm run dev --open │ │ │ │ To close the dev server, hit Ctrl-C │ │ │ │ Stuck? Visit us at https://svelte.dev/chat │ │ │ ├──────────────────────────────────────────────────────────────────────────╯ │ └ You're all set! $ cd my-svelte-react $ pnpm install $ pnpm dev
安装react相关依赖
$ pnpm i react react-dom $ pnpm i --save-dev @types/react @types/react-dom $ pnpm add @vitejs/plugin-react -D
修改vite.config.ts增加react支持
import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; # <---- here export default defineConfig({ plugins: [sveltekit(), react()] # <---- here });
创建react svelte适配器ReactAdapter.svelte, 代码如下:
# src/lib/utils/ReactAdapter.svelte <script lang="ts"> import React from "react"; import ReactDOM from "react-dom/client"; import { onDestroy, onMount } from "svelte"; const e = React.createElement; let container: HTMLElement; let root: ReactDOM.Root; onMount(() => { const { el, children, class: _, ...props } = $$props; try { root = ReactDOM.createRoot(container); root.render(e(el, props, children)); } catch (err) { console.warn(`react-adapter failed to mount.`, { err }); } }); onDestroy(() => { try { if (root) { root.unmount(); } } catch (err) { console.warn(`react-adapter failed to unmount.`, { err }); } }); </script> <div bind:this={container} class={$$props.class}></div>
目前此部分适配器有问题, children无法获取并且在react组件中渲染
参考:
props-and-restProps
issues
添加react组件库, 如 ant design
$ pnpm add antd # +page.svelte <script lang="ts"> import { Button } from "antd"; import ReactAdapter from "$lib/utils/ReactAdapter.svelte"; </script> <ReactAdapter el={Button} type="primary">Hello, World!</ReactAdapter>
到此这篇关于svelte5中使用react组件的文章就介绍到这了,更多相关svelte5使用react组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源链接:https://www.jb51.net/javascript/334142ylv.htm
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容