当前位置: 首页 > article >正文

svelte5中使用react组件

在svelet5中导入并使用react组件库

  • svelte5中使用react组件

svelte5中使用react组件

在svelet5中导入并使用react组件库, 示例项目地址:https://github.com/shenshouer/my-svelte-react

在svelte5中当前还有问题,无法将children传递到react中渲染

  1. 使用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

  1. 安装react相关依赖
$ pnpm i react react-dom
$ pnpm i --save-dev @types/react @types/react-dom
$ pnpm add @vitejs/plugin-react -D

  1. 修改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
});
  1. 创建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

  1. 添加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>



http://www.kler.cn/a/473061.html

相关文章:

  • Meilisearch ASP.Net Core API 功能demo
  • 从零手写线性回归模型:PyTorch 实现深度学习入门教程
  • Linux存储管理之核心秘密(The Core Secret of Linux Storage Management)
  • 设计模式 行为型 命令模式(Command Pattern)与 常见技术框架应用 解析
  • 基于 GEE Sentinel-1 数据集提取水体
  • 关于考完两门专业课的感受阶段性总结
  • 跨界融合:人工智能与区块链如何重新定义数据安全?
  • MATLAB语言的软件工程
  • c#13新特性
  • 推动多语言语音科技迈向新高度:INTERSPEECH 2025 ML-SUPERB 2.0 挑战赛
  • JAVA常见问题解答
  • 【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/08】小测-【第8章 STP生成树协议】理论和实操
  • 【Linux】shell脚本编程
  • 详解opencv resize之INTER_LINEAR和INTER_AREA
  • 用户注册模块(芒果头条项目进度4)
  • JVM三JVM虚拟机
  • 战地雷达通信系统中无人机与特种车辆智能组网及雷达通信一体化研究报告
  • UE蓝图节点备忘录
  • C++ 泛型编程:动态数据类模版类内定义、类外实现
  • 嵌入式系统 (2.嵌入式硬件系统基础)
  • 文献阅读分享:ChatGPT在推荐系统中的偏见研究
  • 使用Qt实现json数据的格式检测并序列化输出 Qt5.4.0环境
  • 根据docker file 编译镜像
  • 入门嵌入式(六)——定时器
  • GPIO输入及两个应用案例