svelte5中使用react组件的方法
作者:流泪的鱼
本文介绍了如何在Svelte 5项目中导入并使用React组件库,并提供了一个示例项目地址,此外,还添加了一个React组件库(如Ant Design)的示例,感兴趣的朋友跟随小编一起看看吧
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组件中渲染
添加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组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
