Table of Contents
How to implement it specifically?
我是vue : {{aaa}}
当前是react项目内
Advanced version
Home Web Front-end JS Tutorial How to run vue components in react project? Method introduction

How to run vue components in react project? Method introduction

Apr 11, 2022 pm 08:51 PM
react vue

reactHow to run the vue component in the project? The following article will introduce you to the method of running vue components in react projects through examples. I hope it will be helpful to you!

How to run vue components in react project? Method introduction

The background of this article comes from an interview. I was asked, If vue and react components need to interoperate and be reused, how can they be implemented elegantly?

Except that developers manually transfer the code. At present, I can think of only 2 solutions

  • Solution 1: Vue code and react code mutual conversion (component library synchronization)

  • Option 2: Directly let the vue component run in the React project, and vice versa.

【Related recommendations: Redis video tutorial, vuejs tutorial

Let’s first look at the implementation effect

How to run vue components in react project? Method introduction

The vue component was rendered normally in reat, and I alsoclicked the button 3 times,vue’s response and render are also normal

How to implement it specifically?

Implementation principle

  • Introduce the full version of vue (if you consider performance, you can introduce it on demand)

  • Wait until the componentDidMount stage, mount <div id="vueApp"></div>After that

  • new Vue(..).$mount('#vueApp')

import Vue from &#39;vue/dist/vue.min.js&#39; // 引入完整版,否则不能解析vue的组件对象语法
export default class App extends Component {
  constructor(props) {
    super(props)
  }
  
  componentDidMount() {
    const Foo = {
      template: `
        <div>
          <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
          <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
          <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
          <button @click="aaa++">按钮</button>
        </div>
      `,
      data () {
        return {
          aaa: 2222
        }
      }
    }
    new Vue({
      render: h => h(Foo),
    }).$mount(&#39;#vueApp&#39;)
  }

  render() {
    return (
      <div>
        <h1 id="当前是react项目内">当前是react项目内</h1>
        <h1 id="当前是react项目内">当前是react项目内</h1>
        以下将渲染vue组件
        <div id="vueApp" />
      </div>
    )
  }
}
Copy after login

Note:

If you only need to support vue's component option object, then you don't need to configure webpack, it's over.

Vue's component option object refers to:

const Foo = { 
    template: ` 
        <div> 
            <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
            <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1> 
            <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1> 
            <button @click="aaa++">按钮</button> 
        </div> 
    `, 
    data () { 
        return { 
            aaa: 2222 
        } 
    } 
}
Copy after login

Advanced version

The advanced version here refers to: Requires support for .vue files/components (the demo above is directly the component option object, without .vue files)

For example: (Continue to use the demo above and change a few lines)

  • Changed to import the .vue file: import Foo from "./Foo.vue" ;
import Vue from &#39;vue/dist/vue.min.js&#39; // 引入完整版,否则不能解析vue的组件对象语法
import Foo from "./Foo.vue";
export default class App extends Component {
  ...
  
  componentDidMount() {
    new Vue({
      render: h => h(Foo),
    }).$mount(&#39;#vueApp&#39;)
  }

  ...
}
Copy after login

To take effect at this time, you need to configure vue-loader

  • Official website: https://vue-loader. vuejs.org/guide/#manual-setup
// 在 webpack.config.js 内
const { VueLoaderPlugin } = require(&#39;vue-loader&#39;)

module.exports = {
  mode: &#39;development&#39;,
  module: {
    rules: [
      {
        test: /.vue$/,
        loader: &#39;vue-loader&#39;
      }
    ]
  },
  plugins: [
    // make sure to include the plugin for the magic
    new VueLoaderPlugin()
  ]
}
Copy after login

Notes

  • ##Suggestions When you test, don’t use react scaffolded projects, use react projects that configure webpack.config.js from scratch

  • I currently use In the latest version of scaffolding, after run eject, an error will be reported when writing in webpack.config.js because VueLoaderPlugin is not compatible with a oneOf syntax

  • If not used If you parse the .vue file and directly use vue's component option object syntax, then there is no need to configure vue-loader

Summary

  • It is recommended that when you test, do not use react scaffolding projects, use react projects that configure webpack.config.js from scratch

  • If you don’t need to parse For .vue files, if you directly use vue's component option object syntax, then there is no need to configure vue-loader

Finally, for comparison, use it in the vue project React components, and Vue components used in react projects, the difference in configuration!

Do I need to configure the loader of webpack.config.js? Using react components in vue projectsUse the vue component in the react project

yes, you need to configure babel-loader ,Compile the .jsx file, you need to pay extra attention to the option option of babel-loader
no, if you do not need to parse the .vue file and directly use vue's component option object syntax, then no additional configuration vue-loader is required. If you need to support .vue files, you need to configure vue-loader
##This article is reproduced from: https://juejin.cn/post/ 7083303446161391623

Author: bigtree

For more programming-related knowledge, please visit:
Programming Video

! !

The above is the detailed content of How to run vue components in react project? Method introduction. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Vue.js vs. React: Project-Specific Considerations Vue.js vs. React: Project-Specific Considerations Apr 09, 2025 am 12:01 AM

Vue.js is suitable for small and medium-sized projects and fast iterations, while React is suitable for large and complex applications. 1) Vue.js is easy to use and is suitable for situations where the team is insufficient or the project scale is small. 2) React has a richer ecosystem and is suitable for projects with high performance and complex functional needs.

How to add functions to buttons for vue How to add functions to buttons for vue Apr 08, 2025 am 08:51 AM

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

React's Role in HTML: Enhancing User Experience React's Role in HTML: Enhancing User Experience Apr 09, 2025 am 12:11 AM

React combines JSX and HTML to improve user experience. 1) JSX embeds HTML to make development more intuitive. 2) The virtual DOM mechanism optimizes performance and reduces DOM operations. 3) Component-based management UI to improve maintainability. 4) State management and event processing enhance interactivity.

How to jump to the div of vue How to jump to the div of vue Apr 08, 2025 am 09:18 AM

There are two ways to jump div elements in Vue: use Vue Router and add router-link component. Add the @click event listener and call this.$router.push() method to jump.

React and the Frontend: Building Interactive Experiences React and the Frontend: Building Interactive Experiences Apr 11, 2025 am 12:02 AM

React is the preferred tool for building interactive front-end experiences. 1) React simplifies UI development through componentization and virtual DOM. 2) Components are divided into function components and class components. Function components are simpler and class components provide more life cycle methods. 3) The working principle of React relies on virtual DOM and reconciliation algorithm to improve performance. 4) State management uses useState or this.state, and life cycle methods such as componentDidMount are used for specific logic. 5) Basic usage includes creating components and managing state, and advanced usage involves custom hooks and performance optimization. 6) Common errors include improper status updates and performance issues, debugging skills include using ReactDevTools and Excellent

How to jump a tag to vue How to jump a tag to vue Apr 08, 2025 am 09:24 AM

The methods to implement the jump of a tag in Vue include: using the a tag in the HTML template to specify the href attribute. Use the router-link component of Vue routing. Use this.$router.push() method in JavaScript. Parameters can be passed through the query parameter and routes are configured in the router options for dynamic jumps.

React and the Frontend Stack: The Tools and Technologies React and the Frontend Stack: The Tools and Technologies Apr 10, 2025 am 09:34 AM

React is a JavaScript library for building user interfaces, with its core components and state management. 1) Simplify UI development through componentization and state management. 2) The working principle includes reconciliation and rendering, and optimization can be implemented through React.memo and useMemo. 3) The basic usage is to create and render components, and the advanced usage includes using Hooks and ContextAPI. 4) Common errors such as improper status update, you can use ReactDevTools to debug. 5) Performance optimization includes using React.memo, virtualization lists and CodeSplitting, and keeping code readable and maintainable is best practice.

React's Ecosystem: Libraries, Tools, and Best Practices React's Ecosystem: Libraries, Tools, and Best Practices Apr 18, 2025 am 12:23 AM

The React ecosystem includes state management libraries (such as Redux), routing libraries (such as ReactRouter), UI component libraries (such as Material-UI), testing tools (such as Jest), and building tools (such as Webpack). These tools work together to help developers develop and maintain applications efficiently, improve code quality and development efficiency.

See all articles