用React实现部分Vue常用指令

37 篇文章 1 订阅

1.实现vue的v-for

在Vue开发中,经常使用v-for来遍历数组,然后进行渲染数据,另外也要注意还要给每一项绑定一个key,否则在删除、新增元素的时候会导致顺序错乱问题。

在React中是用数组的Map()方法来实现的。

<></> 相当于Vue的<template></template>元素。

import React, {useState} from 'react';

const Dome = () => {
    const [list, setList] = useState(['语文', '数学', '英语', '政治'])

    return(
        <>
          {
              list.map((item, inx) => {
                return(
                    <div key={inx}>{item}</div>
                )
              })
          }
        </>
    )
};

export default Dome

 2.实现vue的v-if

(1)在React中可以借助"三元运算符"来实现v-if

import React, {useState} from 'react';

const Dome = () => {
    const [show] = useState(false)

    return(
        <>
          {
            show ? <div>显示</div> : <div>隐藏</div>
          }
        </>
    )
};

export default Dome

(2)第二种方式(不够简洁,不推荐)

import React, {useState} from 'react';

const Dome = () => {
    const [show] = useState(false)
    const element = () => {
        if(show) {
            return(
                <div>显示</div>
            )
        }else {
            return (
                <div>隐藏</div>
            )
        }
    }

    return(
        <>
          { element() }
        </>
    )
};

export default Dome

 3.实现vue的v-show

import React, {useState} from 'react';

const Dome = () => {
    const [show] = useState(false)

    return(
        <>
          <div style={{ display: !show ? 'bock' : 'none' }}>龙马精神</div>
        </>
    )
};

export default Dome

注: style 接受的值是一个对象,且用 {} 括号传入,而且对象的属性名只能用驼峰式来命名。

4.实现vue的v-model 

import React, {useState} from 'react';

const Dome = () => {
    const [value, setValue] = useState('')
    const handleChange = e => {
        setValue(e.target.value)
    }
    return(
        <>
          <input type="text" value={value} onChange={handleChange}/>
        </>
    )
};

export default Dome

v-model其实就是数据双向绑定,在vue项目中input输入框经常使用到v-model 。

React是利用input的value和onChange事件来实现。其实Vue组件的v-model是个语法糖,本质上是利用名为value的prop和名为input的事件来实现数据双向绑定的。

看一个例子:

父组件:

import React, { useState } from 'react';
import Child from './child';

export default function Index(){
  const [value, setValue] = useState('密码')
  const handleChange = ev => {
      setValue(ev)
  }

  return(
      <>
       <button onClick={() => {
           handleChange('123')
       }}>按钮一</button>
        <Child value={value} onChange={ handleChange } />
      </>
  )
}

子组件:

import { useState } from "react";

export default function Child({value, onChange}) {
  
  return (
    <div>
      <div>{value}</div>
      <button onClick={() => {
          onChange('新密码')
      }}>按钮二</button>
    </div>
  );
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ReactVue 是两种流行的 JavaScript 框架。它们有一些相似之处,比如都是用于构建用户界面的,但也有不同之处。React 更加灵活,可以与其他框架和库结合使用,Vue 更加简单易学,有更多的内置功能和开发工具。另外,React 更加注重组件之间的通信和数据流,Vue 则更加注重模板和指令的使用。选择哪一个框架,很大程度上取决于项目的需求和团队的偏好。 ### 回答2: ReactVue是目前前端开发中最常用的两种框架。它们有一些相似之处,但也有很多区别。 首先,React是由Facebook开发并维护的,而Vue是由一位中国工程师开发并得到了广泛的开源社区支持,这也导致了它们在国际影响力和使用人数上的差异。 其次,React在组件化方面更为灵活,它通过JSX语法将组件的结构、样式和逻辑封装在一起,使得代码更易于组织和维护。而Vue则采用了类似于HTML的模板语法,将结构和逻辑放在一起,使得代码更具可读性和可维护性。 另外,在状态管理方面,React使用了单向数据流的概念,通过props和callbacks来管理组件之间的数据传递。而Vue则使用了双向数据绑定的方式,通过v-model指令来方便地实现父子组件之间的数据传递。 关于性能方面,React通过虚拟DOM的概念来提升渲染性能,只有当数据发生改变时才会重新渲染相关的组件,从而减少了页面重绘的次数。而Vue则通过模板编译和响应式系统来实现类似的性能优化。 最后,社区生态方面,React拥有庞大的生态系统,有很多开源组件和工具可供选择,而Vue虽然较小众,但也有很多优秀的开源项目。这也导致了在开发过程中的资源选择和学习成本的差异。 总结来说,ReactVue都是非常优秀的前端框架,它们各有特点和适用场景。选择哪个框架取决于项目的需求、开发团队的技术栈和个人的喜好。 ### 回答3: ReactVue是两个非常流行的前端框架,它们有许多相似之处,但也存在一些区别。 首先,React是由Facebook开发和维护的,而Vue是由尤雨溪开发和维护的。这两个框架在设计哲学上有一些不同。React注重组件化和函数式编程的思想,而Vue则更加注重简洁和易用性。 其次,React使用JSX作为组件的模板语法,而Vue使用单文件组件(Single-File Components)的模板语法。JSX使用类似HTML的语法,让开发者可以在JavaScript代码中编写组件的模板。而单文件组件则将组件的HTML代码、CSS样式和JavaScript代码集中在一个文件中,使得组件的结构更加清晰和可维护。 再次,React使用虚拟DOM(Virtual DOM),而Vue使用模板渲染。虚拟DOM是React的核心概念,它将组件的状态变化转化为对虚拟DOM的操作,最后再将虚拟DOM渲染为实际的DOM。而Vue使用模板渲染的方式,将组件的模板直接编译为渲染函数,更加高效。 另外,ReactVue在生态系统和社区支持方面也有一些差异。React拥有庞大的社区和丰富的生态系统,同时有许多成熟的第三方库和工具可供选择。Vue虽然相对较新,但也拥有活跃的社区和成熟的生态系统,并且在中国有着强大的影响力。 总结来说,ReactVue都是优秀的前端框架,它们各有特点,开发者可以根据自己的偏好和项目需求来选择适合的框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值