vue是单项数据流还是双向数据流

vue单项数据流。虽然vue有双向绑定“v-model”,但是vue父子组件之间数据传递,仍然还是遵循单向数据流的,父组件可以向子组件传递props,但是子组件不能修改父组件传递来的props,子组件只能通过事件通知父组件进行数据更改。

vue是单项数据流还是双向数据流

本教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。

双向绑定

简而言之,双向绑定就是model的更新会触发view的更新,view的更新会触发model的更新,它们的作用是相互的
[图片上传失败…(image-81a06f-1556975918443)]

单向数据流

简而言之,单向数据流就是model的更新会触发view的更新,view的更新不会触发model的更新,它们的作用是单向的

1.png

立即学习“前端免费学习笔记(深入)”;

这不是废话吗,谁都知道的

下面就是真正的干货了,板凳坐好


登录后复制Vue是单向数据流,不是双向绑定Vue的双向绑定不过是语法糖Object.definePropert是用来做响应式更新的

v-model的实现原理

放在组件上

父组件

  

子组件

  
          
export default { name: "PersonalInfo", model: { prop: "phoneInfo", // 默认 value event: "change" // 默认 input }, props: { phoneInfo: Object, zipCode: String }, methods: { handlePhoneChange(e) { this.$emit("change", { ...this.phoneInfo, phone: e.target.value }); }, handleZipCodeChange(e) { this.$emit("update:zipCode", e.target.value); } }};

登录后复制

父组件的写法等同于

  (phoneInfo = val)"    :zip-code="zipCode"  @update:zipCode="val => (zipCode = val)"/>

登录后复制放在input元素上

其实上文已经体现了

 { PhoneInfo.phone = val }"

登录后复制

以上两句是相等的

TIPS

model 2.2.0+

允许一个自定义组件在使用 v-model 时定制 prop 和 event。默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event,但是一些输入类型比如单选框和复选框按钮可能想使用 value prop 来达到不同的目的。使用 model 选项可以回避这些情况产生的冲突。

.sync修饰符 2.3.0+

在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源。

总结

所以说呢, vue还是单向数据流,v-model只不过是语法糖,它是:value="sth"和@change="val => sth = val"的简写形式。我们通常在面试当中被提问,Vue是怎么实现数据响应式更新的,面试官期望听到的回答是通过Object.defineProperty()的get和set方法来实现响应式更新。

v-model和.sync修饰符分别在组件单个属性、多个属性需要双向绑定下使用,这是二者使用的场景

相关推荐:《vue.js教程》

以上就是vue是单项数据流还是双向数据流的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2945776.html

(0)
上一篇 2025年3月11日 22:38:05
下一篇 2025年3月6日 19:12:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue路由钩子函数有几种?分别是什么?

    vue路由钩子函数有2种,分别为:1、全局守卫(全局钩子函数),指的是“index.js”中的router对象;2、路由守卫(针对单个路由钩子函数);3、组件守卫(组件级钩子函数),是定义在路由组件内部的守卫。 本教程操作环境:window…

    2025年3月11日 编程技术
    200
  • vue中props将父组件方法传递给什么

    在vue中,props将父组件方法(数据)传递给子组件。父组件发送的形式是以属性的形式绑定值到子组件身上,接着子组件用属性props去接受父组件传过来的值。 本教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。 父…

    2025年3月11日 编程技术
    200
  • 前端三大框架是什么

    前端三大框架是指:1、Angular,是一款构建用户界面的前端JavaScript MVC框架;2、React,是一个用来构建用户界面的JavaScript框架;3、Vue,是一套构建用户界面的渐进式JavaScript框架。 本教程操作环…

    2025年3月11日
    200
  • vue中的v-if和v-show的区别有哪些

    区别:1、“v-if”是根据判断条件来动态的进行增删DOM元素,“v-show”是根据判断条件来动态的进行显示和隐藏元素;2、“v-if”的切换消耗高,“v-show”的初始渲染消耗高;3、“v-show”的性能比“v-if”高等等。 本教…

    2025年3月11日 编程技术
    200
  • bootstrap和vue的区别是什么

    区别:1、Bootstrap是基于HTML、CSS、JS的简洁、直观、强悍的前端开发框架;而Vue是一套用于构建用户界面的渐进式JavaScript框架。2、bootstrap用于快速开发响应式页面;而vue用于把前端开发组件化。 本教程操…

    2025年3月11日
    200
  • bootstrap和vue能一起用吗

    bootstrap和vue能一起用,vue写模板用bootstrap可提高开发效率;且vue专门提供了一个bootstrap ui组件库BootstrapVue,用于使用Vue和Bootstrap4在web上构建响应迅速,移动优先的网站。 …

    2025年3月11日
    200
  • vue spa是什么意思

    在vue中,spa全称“single-page application”,中文意思为“单页应用程序”,就是只有一个Web页面的应用,是加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用程序。 本教程操作环境:windo…

    2025年3月11日
    200
  • vue的babel是什么意思

    在vue中,Babel是一个JavaScript编译器,主要用于将采用ECMAScript 2015+语法编写的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中。 本教程操作环境:windows7…

    2025年3月11日 编程技术
    200
  • vue的导航守卫都有哪些

    导航守卫有:1、全局前置守卫“beforeEach”;2、全局解析守卫“beforeResolve”;3、路由独享的守卫“beforeEnter”;4、组件内的守卫“beforeRouteEnter”、“beforeRouteLeave”。…

    2025年3月11日
    200
  • vue的辅助函数有哪些

    vue的辅助函数有:1、mapState,将全局状态管理的state值映射到组件的计算属性;2、mapGetters,将全局状态管理的getters值映射到组件的计算属性;3、mapActions;4、mapMutations。 本教程操作…

    2025年3月11日
    200

发表回复

登录后才能评论