Vue与React的异同-组件(二)

Vue与React都鼓励组件化应用,即将应用分拆成一个个功能明确的模块,每个模块之间可以通过合适的方式互相联系,但各自的实现略有不同。以下谈谈我的理解,如有不对,欢迎指正在Vue组件中,有几个观念和React相差比较大,我觉得主要有以下这几点:Vue组件分为全局注册和局部注册,在react中都是通过import相应组件,然后模版中引用props是可以动态变化的,子组件也实时更新,在r
摘要由CSDN通过智能技术生成

Vue与React都鼓励组件化应用,即将应用分拆成一个个功能明确的模块,每个模块之间可以通过合适的方式互相联系,但各自的实现略有不同。以下谈谈我的理解,如有不对,欢迎指正

在Vue组件中,有几个观念和React相差比较大,我觉得主要有以下这几点:

  1. Vue组件分为全局注册和局部注册,在react中都是通过import相应组件,然后模版中引用

  2. props是可以动态变化的,子组件也实时更新,在react中官方建议props要像纯函数那样,输入输出一致对应,而且不太建议通过props来更改视图

  3. 子组件一般要显示地调用props选项来声明它期待获得的数据。而在react中不必需,另两者都有props校验机制

  4. 每个Vue实例都实现了事件接口,方便父子组件通信,小型项目中不需要引入状态管理机制,而react必需自己实现

  5. 使用插槽分发内容,使得可以混合父组件的内容与子组件自己的模板

  6. 多了指令系统,让模版可以实现更丰富的功能,而React只能使用JSX语法

  7. Vue增加的语法糖computed和watch,而在React中需要自己写一套逻辑来实现

0x01 组件的注册

1.Vue

Vue组件注册可分为全局注册和局部注册

  • 全局注册

    需在初始化根实例之前注册组件

//html
<div id="example">
  <my-component></my-component>
</div>

// 注册
Vue.component('my-component', {
  template: '<div>A custom component!</div>'
})

// 创建根实例
new Vue({
  el: '#example'
})
  • 局部注册

    通过Vue 实例/组件的实例选项 components 注册仅在其作用域中可用的组件。这种封装也适用于其它可注册的 Vue 功能,比如指令

var Child = {
  template: '<div>A custom component!</div>'
}

new Vue({
  // ...
  components: {
    // <my-component> 将只在父组件模板中可用
    'my-component': Child
  }
})

2. React

React组件没有全局注册和局部注册的概念,官方推荐以ES6的class来创建组件,调用通过import导入组件实例

import React from "react";

class Demo extends React.Component {
    constructor(props) {
        super(props);
        // 设置 initial state
        this.state = {
            text: props.initialValue || 'placeholder'
        };
        // ES6 类中函数必须手动绑定,也可在调用的时候绑定,或者通过箭头函数
        this.handleChange = this.handleChange.bind(this); 
    }

    handleChange(event) {
        this.setState({
            text: event.target.value
        });
    }

    render() {
        return (
            <div>
                Type something:
                <input onChange={this.handleChange}
               value={this.state.text} />
            </div>
        );
    }
}

export default Demo;
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-React组件库是一个同时支持VueReact的UI组件库,可以在VueReact项目使用。下面以Element-React为例,介绍如何使用Vue-React组件库。 1. 安装Element-React:可以使用npm或yarn安装,命令如下: ``` npm install element-react --save 或 yarn add element-react ``` 2. 引入样式文件:在主入口文件引入Element-React的样式文件,如下: ``` import 'element-react/dist/theme-chalk/index.css'; ``` 3. 引入组件:在VueReact组件按需引入需要使用的Element-React组件,如下: 在Vue组件: ``` <template> <div> <el-button>Vue Button</el-button> </div> </template> <script> import { Button } from 'element-react'; export default { components: { 'el-button': Button } } </script> ``` 在React组件: ``` import { Button } from 'element-react'; class MyComponent extends React.Component { render() { return ( <div> <Button>React Button</Button> </div> ) } } ``` 4. 使用组件:在VueReact组件使用引入的Element-React组件,如下: 在Vue组件: ``` <template> <div> <el-button>Vue Button</el-button> </div> </template> ``` 在React组件: ``` import { Button } from 'element-react'; class MyComponent extends React.Component { render() { return ( <div> <Button>React Button</Button> </div> ) } } ``` 需要注意的是,不同的Vue-React组件库使用方法略有不同,需要根据具体组件库的文档进行使用。同时,也需要根据项目需要选择合适的组件库,避免出现兼容性和功能不匹配的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值