首页 > 其他分享 >Vue/React对比学习

Vue/React对比学习

时间:2023-09-06 17:22:26浏览次数:45  
标签:Vue const name age React useState props return 对比

组件传值

// 父组件
export default function Tab(props: any) {
   const [serverUrl, setServerUrl] = useState<string | undefined>('https://');
   console.log(props);
    // 父组件接受子组件的值并修改
   const changeMsg = (msg?: string) => {
      setServerUrl(msg);
   };

    return (
        <View className='tab'>
           <View className='box'>
              <TabName msg={serverUrl} changeMsg={changeMsg}/>
           </View>
        </View>
     )
}

// 子组件
function TabName(props) {
    console.log('props', props);
    // 子传父
    const handleClick = (msg: string) => {
      props.changeMsg(msg);
    };
    return (
      <View>
        <Text>{props.msg}</Text>
        <Button onClick={()=> handleClick('7777')}}>测试</Button>
      </View>
    )
}

// 声明ref
const domRef = useRef(null);
// 通过点击事件选择input框
const handleBtnClick = () => {
domRef.current?.focus();
console.log(domRef, 'domRef');
}

return (




)


### 列表渲染

获取DOM


### 列表渲染

// 声明对象类型
type Coordinates = {
name: string,
age: number
}

// 对象
let [userState, setUserState] = useState({name: 'John', age: 30});
// 数组
let [list, setList] = useState<Coordinates[]>([{name: '李四', age: 30}]);

const listItem = list.map((oi) => {
return {oi.name}
});

return (
{
list.map((oi) => {
return
{oi.name}

})
}
{ listItem }
)


### 条件渲染

const [serverUrl, setServerUrl] = useState('https://localhost:123');
let [age, setAge] = useState(2);

const name = useMemo(() => {
return serverUrl + " " + age;
}, [serverUrl]);


### 监听器

import {useEffect, useState} from 'react';

export default function home() {
const [serverUrl, setServerUrl] = useState('test');
const [age, setAge] = useState(2);
/**

  • useEffect第二个参数所传递的值会进行根据值的变化而出发

*/
useEffect(() => {
if(age !== 5) {
setAge(++age);
}
}, [age]);
}

标签:Vue,const,name,age,React,useState,props,return,对比
From: https://www.cnblogs.com/openmind-ink/p/17681636.html

相关文章

  • vuejs3.0 从入门到精通——初始化项目——项目结构
    初始化项目——项目结构 项目结构是项目的整体展现,也是对不同文件和文件夹的业务模块的划分。随着业务需求的迭代,项目会不断地增加业务模块,建立业务模块文件,使项目结构清晰、方便管理,这是很重要的。这个目录结构是使用VueCLI创建的Vue.js项目,其中包含了一些常用的文件和......
  • vue3集成jsoneditor
    一、背景之前在做录制回放平台的时候,需要前端展示子调用信息,子调用是一个请求列表数组结构,jsoneditor对数组的默认展示结构是[0].[1].[2]..的方式,为了达到如下的效果,必须用到onNodeName的钩子函数,因此深入调研了下vue3如何集成jsoneditor最后做出来的效果图onNodeName的参考......
  • vue使用socket.io
    Vue项目使用socket.io使用librarysocket.io-client或者vue-socket.ionpminstallsocket.io-client||npminstallvue-socket.io使用socket.io-clientsocket.io-client是socket.io原配插件在对应的组件内使用import{io}from'socket.io-client'this.socket=......
  • vuejs3.0 从入门到精通——项目创建
    项目创建 完成VueCLI脚手架的安装后,即可快速构建一个全新Vue.js项目,包括可初始化项目的整体结构、依赖包、插件等相关工作。一、命令构建项目1.1、创建项目:[root@JumperServer:project_vue]#vuecreatevue3-element-plus-adminVueCLIv5.0.8?Pleasepickapr......
  • vue3+typescript +uniapp中select标签
    <select:value="state.year"@change="handleSelectChange($event.target)"> <option:value="i"v-for="iinstate.yearrange">{{i}}</option> </select> ts的代码:``相当于v-model<se......
  • 解决vue项目build的时候报错Warning: Accessing non-existent property ‘cat‘ of mo
    *正在执行任务:npmrunbuild>[email protected]>nodebuild/build.js-buildingforproduction...(node:8992)Warning:Accessingnon-existentproperty'cat'ofmoduleexportsinsidecirculardependency(Use`node--trace-warnings...`t......
  • vuejs3.0 从入门到精通——脚手架安装
    脚手架安装 VueCLI是基于Vue.js进行快速开发的完整系统,支持搭建交互式项目、快速开始零配置原型开发、丰富的官方插件集合,以及完全图形化地创建和管理Vue.js项目的用户界面。 VueCLI致力于将Vue.js生态中的工具基础标准化,它确保各种构件工具基于智能的默认配置即......
  • 学习 vue.js 3.0 中遇到的前端相关网站汇总
    序章最近学习vue.js,期间遇到不少相关网站,特整理于本文。 学习教程菜鸟教程https://www.runoob.com/ 阮一峰:Flex布局教程语法:https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html实例:https://www.ruanyifeng.com/blog/2015/07/flex-examples.html W3Csch......
  • Vue3 setup 如何添加name
    Vue3setup如何添加name小满zs2022-11-2915:5810778 开启掘金成长之旅!这是我参与「掘金日新计划·12月更文挑战」的第2天,点击查看活动详情Vue3中name有什么用呢?1.在递归组件的时候需要定义name2.配合keep-aliveincludeexclude可以缓存组件3.在Vue有报错或......
  • vue项目实录:下拉刷新组件的开发
    “下拉刷新”和“上滑加载更多”功能在前端、尤其是移动端项目中非常重要,这里笔者由曾经做过的vue项目中的“blink”功能和各位探讨下【下拉刷新】组件的开发:正式开篇在前端项目的components文件夹下新建pullRefreshView文件夹,在其中新建组件index.vue:(它代表“整个屏幕”,通过s......