React 与 Vue 对比指南

Test

React 与 Vue 对比指南


本文将展示如何在 ReactVue 中实现常见功能,从基础渲染到高级状态管理

Hello

分别使用 reactvue 写一个 Hello World!

react
export default () => {
    return <div>Hello World!</div>;
}
vue
<template>
  <div>Hello World!</div>
</template>

属性绑定

react

通过 {} 绑定属性

export default () => {
  const url = "https://liuyuyang.net"
  return <a href={url}>跳转</a>;
}
vue

通过 : 绑定属性

<script setup lang="ts">const url = "https://liuyuyang.net"</script>

<template>
  <!-- <a href="https://liuyuyang.net"></a> -->
  <a :href="url">跳转</a>
</template>

表达式

react

react 的表达式是单括号

export default () => {
  const value = "Hello World!"
  const getValue = () => "Hello"
  const getImage = () => "https://liuyuyang.net"

  return (
    <>
      <div>{value}</div>
      <div>{true ? 'yes' : 'no'}</div>
      <div>{getValue()}</div>

      <img src={getImage() + '/1.jpg'} />
      <div style={{ background: true ? 'red' : 'blue' }}>{value}</div>
    </>
  )
}
vue

vue 的表达式是双括号

<script setup lang="ts">const value = "Hello World!"
const getValue = () => "Hello"
const getImage = () => "https://liuyuyang.net"</script>

<template>
  <div>{{ value }}</div>
  <div>{{ true ? 'yes' : 'no' }}</div>
  <div>{{ getValue() }}</div>

  <img :src="getImage() + '/1.jpg'" />
  <div :style="{ background: true ? 'red' : 'blue' }">{{ value }}</div>
</template>

动态类名

react

react 定义类名的方式为 className

export default () => {
  return <div className={`${true ? 'aaa' : 'bbb'}`}>Hello World!</div>
}
vue

vue 定义类名的方式为 class

<script setup lang="ts">
</script>

<template>
  <div :class="`${true ? 'aaa' : 'bbb'}`">Hello World!</div>
  <div :class="{ aaa: true }">Hello World!</div>
  <div :class="{ 'aaa-bbb': true }">Hello World!</div>
</template>

条件渲染

react

react 大多数语法都比较偏向原生

export default () => {
  const active = 1
  return (
    <>
      {
        active === 1
        ? <div>aaa</div>
        : active === 2
        ? <div>bbb</div>
        : <div>ccc</div>
      }
    </>
  )
}
vue

vue 可以使用 v-ifv-show 进行条件渲染

渲染数据

react

react 虽然有点语法写起来没有 vue 简单,但他的有点在于更加灵活、自由,非常受益于大型复杂的项目

vue

vue 使用 v-for 进行数据渲染

事件处理

react

react 的 onClick 需要的是一个函数

react 事件传参方式

vue

vue 的 @click 需要的是实例上已有的函数,比如在当前文件以及全局定义或内置的函数。因为 alert 不在实例上,因此不能直接 @click="alert('Hello World!')",但我们可以在当前文件定义一个函数,在函数里面使用 alert,然后调用这个函数

vue 事件传参方式

状态处理

react

react 通过 useState 进行状态管理

vue

vue 通过 ref 或 reactive 进行状态管理

表单处理

react

表单处理这一点个人感觉 react 要比 vue 麻烦些

vue

双向数据绑定,vue 的一大特性,这个语法糖非常好用

数据侦听

react
vue

计算属性

react

react 通过 useEffect 监听数据的变化

vue

vue 通过 watch 监听数据的变化

组件

路由

全局状态管理

两种框架完成相同的Demo

打赏
评论区
头像