This works for both Vue 2 and Vue 3.
yarn add @egoist/vue-to-react
import React from 'react'
import { render } from 'react-dom'
import toReact from '@egoist/vue-to-react'
const VueComponent = {
data() {
return {
count: 0
}
},
render(h) {
return h(
'button',
{
on: {
click: () => this.count++
}
},
[this.count]
)
}
}
const ReactComponent = toReact(VueComponent)
render(<ReactComponent />, document.getElementById('app'))
By default we pass all props from React to Vue:
const Counter = toReact({
props: ['initialCount'],
render(h) {
return h('button', {}, [this.initialCount])
}
})
const App = <Counter initialCount={0} />
However you can customize how the props are passed to Vue with the passProps
option:
toReact(VueComponent, {
// Only pass `initialCount` prop
passProps: props => ({ initialCount: props.initialCount }),
// Or disable props
passProps: false
})
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
@egoist/vue-to-react © EGOIST, Released under the MIT License.
Authored and maintained by EGOIST with help from contributors (list).
github.com/egoist · GitHub @EGOIST · Twitter @_egoistlily