当前位置: 首页 > article >正文

深度解析——Vue与React的核心差异

一、设计哲学差异

维度 Vue 3 React 18
定位 渐进式框架 UI库+生态体系
设计目标 降低前端开发门槛 构建大型复杂应用
学习曲线 2周(官方文档友好) 3周(生态学习成本高)

案例对比:开发商品详情页

<!-- Vue模板 -->
<template>
  <div class="product">
    <h1>{
  { product.name }}</h1>
    <img :src="product.image" />
    <button @click="addToCart">加入购物车</button>
  </div>
</template>
// React组件 
function Product({ product }) {
  const [cart, setCart] = useState([]);
  
  const addToCart = () => {
    setCart([...cart, product]);
  };
 
  return (
    <div className="product">
      <h1>{product.name}</h1>
      <img src={product.image} />
      <button onClick={addToCart}>加入购物车</button>
    </div>
  );
}

二、响应式原理对比

Vue响应式系统

// 基于Proxy的响应式 
const product = reactive({
   
  name: 'iPhone 15',
  price: 6999 
});
 
watchEffect(() => {
   
  console.log(`价格更新:${
     product.price}`);
});
 
product.price = 6499; // 自动触发日志输出 

React状态管理

// 基于Hooks的状态更新 
const [product, setProduct] = useState({
   
  name: 'iPhone 15',
  price: 6999 
});
 
useEffect(() => {
   
  console.log(`价格更新:${
     product.price}`);
}, [product.price]);
 
const updatePrice = () => {
   
  setProduct(prev => ({
   ...prev, price: 6499}));
};

核心差异:

  • Vue自动追踪依赖关系
  • React需要显式声明依赖数组
  • Vue的响应式粒度到属性级别
  • React以组件为单位重渲染

三、模板系统对比

Vue单文件组件

<template>
  <!-- 声明式模板 -->
  <div v-for="item in cart" :key="item.id">
    {
  { item.name }} x{
  { item.quantity }}
    <button @click="removeItem(item.id)">删除</button>
  </div>
</template>
 
<script setup>
// 逻辑与模板分离 
const cart = ref([]);
const removeItem = (id) => {
  cart.value = cart.value.filter(item => item.id !== id);
};
</script>

React JSX

// 命令式渲染 
function Cart() {
  const [cart, setCart] = useState([]);
 
  const removeItem = (id) => {
    setCart(prev => prev.filter(item => item.id !== id));
  };
 
  return (
    <div>
      {cart.map(item => (
        <div key={item.id}>
          {item.name} x{item.quantity}
          <button onClick={() => removeItem(item

http://www.kler.cn/a/551549.html

相关文章:

  • 解锁观察者模式:Java编程中的高效事件管理之道
  • FBD电插锁硬件,如何通过C++ 控制低电压高低电压实现控制开关锁,通过磁吸检查是否开门操作
  • 单纯禁用Cookie能否保证隐私安全?
  • 探秘 DeepSeek R1 模型:跨越多领域的科技奇迹,引领智能应用新浪潮
  • 视觉相关问题总结
  • 地表放置机场和飞机(十)
  • 深入内存调试:Valgrind工具的终极指南(转)
  • Oracle Rac 多路径链路不稳定引发IO降速-光弱
  • 关于使用雪花算法生成唯一ID,返回给前端ID不一致的问题
  • 内容中台重构企业内容管理流程驱动智能协作升级
  • 个人系统架构技术分享
  • 沃丰科技大模型标杆案例 | 索尼大模型智能营销机器人建设实践
  • 【笔记】LLM|Ubuntu22服务器极简本地部署DeepSeek+API使用方式
  • ubuntu下载和编译Android源码
  • SOME/IP--协议英文原文讲解6
  • UE5控件组件显示UMG文本不正常
  • 【Python项目】文件销毁工具文档
  • Pearson相关分析法
  • Qt的QTabWidget的使用
  • Mistral Saba:为中东和南亚量身打造的AI模型