# vuera
**Repository Path**: miluu/vuera
## Basic Information
- **Project Name**: vuera
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-21
- **Last Updated**: 2021-04-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# vuera
[](https://travis-ci.org/akxcv/vuera)
[](https://coveralls.io/github/akxcv/vuera?branch=master)
> **NOTE:** This project is [looking for a maintainer](https://github.com/akxcv/vuera/issues/97)!
Use [Vue] components in your [React] app:
```jsx
import React from 'react'
import MyVueComponent from './MyVueComponent.vue'
export default props =>
```
Or use [React] components in your [Vue] app:
```vue
```
## Use cases
- 👨👩👧 Using both Vue and React in one app
- 🏃 Migrating from React to Vue or from Vue to React
## Installation
Install with yarn:
```sh
$ yarn add vuera
# or with npm:
$ npm i -S vuera
```
You can also try the library out via [unpkg]:
```html
```
## Usage
### Vue in React - Preferred usage
The preferred way to use Vue inside of a React app is to use a Babel plugin.
Add `vuera/babel` to `plugins` section of your `.babelrc`:
```json
{
"presets": "react",
"plugins": ["vuera/babel"]
}
```
Now, just use your Vue components like you would use your React components!
```jsx
import React from 'react'
import MyVueComponent from './MyVueComponent.vue'
export default () => (
)
```
### React in Vue - Preferred usage
The preferred way to use React inside of a Vue app is to use a Vue plugin.
```js
import Vue from 'vue'
import { VuePlugin } from 'vuera'
Vue.use(VuePlugin)
/* ... */
```
Now, use your React components like you would normally use your Vue components!
```vue
I'm a Vue component
```
If you configure options in the root instance of a `Vue`, those will not be passed by default to Vue instances within React components. So, for example an i18n or a store instance option configured at the top level is not available in the children Vue components wrapped in React components. To fix this, configure `vueInstanceOptions` similar to:
```js
import Vue from 'vue'
// import other plugins or modules
import { config } from 'vuera'
// Vue.use(...)
config.vueInstanceOptions = { plugin: thePlugIn, store: myStore };
```
**NOTE**: If you're using Vue < 2.4, you *must* pass all props to your React components via a
special prop called `passedProps`:
```vue
I'm a Vue component
```
### Vue in React - without the Babel plugin
If you don't want to use the Babel plugin, you still have two ways of using this library.
1. Use a wrapper component:
```jsx
import React from 'react'
import { VueWrapper } from 'vuera'
import MyVueComponent from './MyVueComponent.vue'
export default () => (
)
```
2. Or use the HOC API:
```jsx
import React from 'react'
import { VueInReact } from 'vuera'
import MyVueComponent from './MyVueComponent.vue'
export default () => {
const Component = VueInReact(MyVueComponent)
return (
)
}
```
### React in Vue - without the Vue plugin
If you don't want to use the Vue plugin, you still have two ways of using this library.
1. Use a wrapper component:
```vue
```
2. Use the HOC API:
```vue
```
## FAQ (I think)
### Are children supported?
Yes. You can pass children from React to Vue and back as you usually would.
React (children will go to the default slot of the Vue component):
```jsx
import React from 'react'
import MyVueComponent from './MyVueComponent.vue'
export default props =>
Hello there!
```
Vue:
```vue
G'day sir
```
### What's the performance? How fast/slow is it compared to pure React / Vue?
I don't know, but the benchmark is coming. Stay tuned.
## Articles
[Integrating React and Vue Components in One Application](https://x-team.com/blog/react-vue-component-integration/)
by [@josephrexme](https://github.com/josephrexme)
## License
[MIT](http://opensource.org/licenses/MIT)
[react]: https://facebook.github.io/react
[vue]: https://vuejs.org
[unpkg]: https://unpkg.com