Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

MKAbuMattar/svelteify-react

Repository files navigation

svelteify-react

svelteify-react is a Svelte component wrapper for React. It allows you to use React components in Svelte.

Installation

To install svelteify-react, use the following command:

# npm
npm install --save svelteify-react
# yarn
yarn add svelteify-react
# pnpm
pnpm add svelteify-react

Usage

Prerequisites

This package requires the following:

  • Create a SvelteKit project
  • Install react and react-dom as dependencies
  • Install @types/react and @types/react-dom as dev dependencies
# npm
npm install --save react react-dom
npm install --save-dev @types/react @types/react-dom
# yarn
yarn add react react-dom
yarn add --dev @types/react @types/react-dom
# pnpm
pnpm add react react-dom
pnpm add --dev @types/react @types/react-dom

Setup

To use svelteify-react, you need to do the following:

  • in each React component, add the following line at the top of the file:
import React from 'react';

Example

import type { ReactNode } from 'react';
import React from 'react';
type Props = {
	className?: string;
	children: ReactNode;
	[x: string]: any;
};
const Title = ({
	className = '',
	children = 'Hello from React!',
	...otherProps
}: Props) => {
	return (
		<h2 className={`${className}`} {...otherProps}>
			{children}
		</h2>
	);
};
export default Title;
import type { ReactNode } from 'react';
import React from 'react';
type Props = {
	className?: string;
	children: ReactNode;
	[x: string]: any;
};
const Button = ({
	className = '',
	children = 'Button from React!',
	...otherProps
}: Props) => {
	return (
		<button className={`${className}`} {...otherProps}>
			{children}
		</button>
	);
};
export default Button;
<script lang="ts">
	import { SvelteifyReact } from 'svelteify-react';

	import Title from '../components/Title';
	import Button from '../components/Button';

	export let txt = 'Hello from Svelteify React!';

	export let counter = 0;

	export let increment = () => {
		counter += 1;
	};

	export let decrement = () => {
		counter -= 1;
	};

	export let reset = () => {
		counter = 0;
	};
</script>
<main>
	<SvelteifyReact el={Title} children={txt} className="title" />
	<p>Counter: {counter}</p>
	<div class="btn-group">
		<SvelteifyReact
			el={Button}
			children={'Increment'}
			className="btn"
			onClick={increment}
		/>
		<SvelteifyReact
			el={Button}
			children={'Decrement'}
			className="btn"
			onClick={decrement}
		/>
		<SvelteifyReact
			el={'button'}
			children={'Reset'}
			className="btn"
			onClick={reset}
		/>
	</div>
</main>
<style>
	:global(.title) {
		font-size: 24px;
		font-weight: 500;
		color: #3f51b5;
	}

	.btn-group {
		display: flex;
		gap: 0.25rem;
	}

	:global(.btn) {
		background-color: #3f51b5;
		color: white;
		border: none;
		border-radius: 4px;
		padding: 8px 16px;
		font-size: 14px;
		font-weight: 500;
		cursor: pointer;
	}
</style>

Example: svelteify-react-example

API

SvelteifyReact

<SvelteifyReact
 el={string}
 children={any}
 className={string}
 onClick={function}
 {...props}
/>

This component is a wrapper for React components. It accepts the following props:

  • el (required): The React element to render, or the name of the React element, or the React component.
  • children (required): The children of the React element.
  • className (optional): The class name of the React element.
  • onClick (optional): The onClick event handler of the React element.
  • ...props (optional): Any other props to pass to the React element.

The SvelteifyReact component returns a ReactElement that can be rendered in Svelte.

License

This package is licensed under the MIT License.

About

svelteify-react is a Svelte component wrapper for React. It allows you to use React components in Svelte.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /