Vue与React数据传递

Vue与React数据传递对比

核心数据传递理念

数据传递理念
Vue
React
双向绑定
依赖自动追踪
单向数据流
显式状态更新

父子组件通信

Vue父子组件通信

<!-- 父组件 -->
<template>
  <child-component 
    :message="parentMessage" 
    @update-message="handleUpdate" 
    v-model:count="count"
  />
</template>

<script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';

const parentMessage = ref('来自父组件的消息');
const count = ref(0);

function handleUpdate(newValue) {
  parentMessage.value = newValue;
}
</script>

<!-- 子组件 -->
<template>
  <div>
    <p>{
  { message }}</p>
    <button @click="updateMessage">修改消息</button>
    <button @click="$emit('update:count', count + 1)">计数+1</button>
  </div>
</template>

<script setup>
defineProps(['message', 'count']);
const emit = defineEmits(['update-message', 'update:count']);

function updateMessage() {
  emit('update-message', '已被子组件更新');
}
</script>

【重点】 Vue支持props向下传递,emit向上传递,以及v-model实现双向绑定。

React父子组件通信

// 父组件
function ParentComponent() {
  const [parentMessage, setParentMessage] = useState('来自父组件的消息');
  const [count, setCount] = useState(0);
  
  const handleUpdate = (newValue) => {
    setParentMessage(newValue);
  };
  
  return (
    <ChildComponent 
      message={parentMessage} 
      onUpdateMessage={handleUpdate}
      count={count}
      setCount={setCount}
    />
  );
}

// 子组件
function ChildComponent({ message, onUpdateMessage, count, setCount }) {
  return (
    <div>
      <p>{message}</p>
      <button onClick={() => onUpdateMessage('已被子组件更新')}>
        修改消息
      </button>
      <button onClick={() => setCount(count + 1)}>
        计数+1
      </button>
    </div>
  );
}

【重点】 React严格单向数据流,通过props传递数据和回调函数实现通信。

兄弟组件通信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值