当前位置: 首页 > news >正文

聊城医院网站建设货源网站开发

聊城医院网站建设,货源网站开发,包头网站,我现在有域名怎么做网站本节使用单文件组件语法作为代码示例 #计算值 有时我们需要依赖于其他状态的状态——在 Vue 中,这是用组件计算属性处理的,以直接创建计算值,我们可以使用 computed 方法:它接受 getter 函数并为 getter 返回的值返回一个不可变的…

本节使用单文件组件语法作为代码示例

#计算值

有时我们需要依赖于其他状态的状态——在 Vue 中,这是用组件计算属性处理的,以直接创建计算值,我们可以使用 computed 方法:它接受 getter 函数并为 getter 返回的值返回一个不可变的响应式 ref 对象。

 
  1. const count = ref(1)
  2. const plusOne = computed(() => count.value++)
  3. console.log(plusOne.value) // 2
  4. plusOne.value++ // error

或者,它可以使用一个带有 get 和 set 函数的对象来创建一个可写的 ref 对象。

 
  1. const count = ref(1)
  2. const plusOne = computed({
  3. get: () => count.value + 1,
  4. set: val => {
  5. count.value = val - 1
  6. }
  7. })
  8. plusOne.value = 1
  9. console.log(count.value) // 0

#watchEffect

为了根据响应式状态自动应用重新应用副作用,我们可以使用 watchEffect 方法。它立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。

 
  1. const count = ref(0)
  2. watchEffect(() => console.log(count.value))
  3. // -> logs 0
  4. setTimeout(() => {
  5. count.value++
  6. // -> logs 1
  7. }, 100)

#停止侦听

当 watchEffect 在组件的 setup() 函数或生命周期钩子被调用时,侦听器会被链接到该组件的生命周期,并在组件卸载时自动停止。

在一些情况下,也可以显式调用返回值以停止侦听:

 
  1. const stop = watchEffect(() => {
  2. /* ... */
  3. })
  4. // later
  5. stop()

#清除副作用

有时副作用函数会执行一些异步的副作用,这些响应需要在其失效时清除 (即完成之前状态已改变了) 。所以侦听副作用传入的函数可以接收一个 onInvalidate 函数作入参,用来注册清理失效时的回调。当以下情况发生时,这个失效回调会被触发:

  • 副作用即将重新执行时
  • 侦听器被停止 (如果在 setup() 或生命周期钩子函数中使用了 watchEffect,则在组件卸载时)

 
  1. watchEffect(onInvalidate => {
  2. const token = performAsyncOperation(id.value)
  3. onInvalidate(() => {
  4. // id has changed or watcher is stopped.
  5. // invalidate previously pending async operation
  6. token.cancel()
  7. })
  8. })

我们之所以是通过传入一个函数去注册失效回调,而不是从回调返回它,是因为返回值对于异步错误处理很重要。

在执行数据请求时,副作用函数往往是一个异步函数:

 
  1. const data = ref(null)
  2. watchEffect(async onInvalidate => {
  3. onInvalidate(() => {...}) // 我们在Promise解析之前注册清除函数
  4. data.value = await fetchData(props.id)
  5. })

我们知道异步函数都会隐式地返回一个 Promise,但是清理函数必须要在 Promise 被 resolve 之前被注册。另外,Vue 依赖这个返回的 Promise 来自动处理 Promise 链上的潜在错误。

#副作用刷新时机

Vue 的响应性系统会缓存副作用函数,并异步地刷新它们,这样可以避免同一个“tick” 中多个状态改变导致的不必要的重复调用。在核心的具体实现中,组件的 update 函数也是一个被侦听的副作用。当一个用户定义的副作用函数进入队列时,默认情况下,会在所有的组件 update 执行:

 
  1. <template>
  2. <div>{{ count }}</div>
  3. </template>
  4. <script>
  5. export default {
  6. setup() {
  7. const count = ref(0)
  8. watchEffect(() => {
  9. console.log(count.value)
  10. })
  11. return {
  12. count
  13. }
  14. }
  15. }
  16. </script>

在这个例子中:

  • count 会在初始运行时同步打印出来
  • 更改 count 时,将在组件更新前执行副作用。

如果需要在组件更新重新运行侦听器副作用,我们可以传递带有 flush 选项的附加 options 对象 (默认为 'pre'):

 
  1. // fire before component updates
  2. watchEffect(
  3. () => {
  4. /* ... */
  5. },
  6. {
  7. flush: 'post'
  8. }
  9. )

flush 选项还接受 sync,这将强制效果始终同步触发。然而,这是低效的,应该很少需要。

#侦听器调试

onTrack 和 onTrigger 选项可用于调试侦听器的行为。

  • onTrack 将在响应式 property 或 ref 作为依赖项被追踪时被调用。
  • onTrigger 将在依赖项变更导致副作用被触发时被调用。

这两个回调都将接收到一个包含有关所依赖项信息的调试器事件。建议在以下回调中编写 debugger 语句来检查依赖关系:

 
  1. watchEffect(
  2. () => {
  3. /* 副作用 */
  4. },
  5. {
  6. onTrigger(e) {
  7. debugger
  8. }
  9. }
  10. )

onTrack 和 onTrigger 只能在开发模式下工作。

#watch

watch API 完全等同于组件侦听器 property。watch 需要侦听特定的数据源,并在回调函数中执行副作用。默认情况下,它也是惰性的,即只有当被侦听的源发生变化时才执行回调。

  • 与 watchEffect 比较,watch 允许我们:
    • 懒执行副作用;
    • 更具体地说明什么状态应该触发侦听器重新运行;
    • 访问侦听状态变化前后的值。

#侦听单个数据源

侦听器数据源可以是返回值的 getter 函数,也可以直接是 ref

 
  1. // 侦听一个 getter
  2. const state = reactive({ count: 0 })
  3. watch(
  4. () => state.count,
  5. (count, prevCount) => {
  6. /* ... */
  7. }
  8. )
  9. // 直接侦听ref
  10. const count = ref(0)
  11. watch(count, (count, prevCount) => {
  12. /* ... */
  13. })

#侦听多个数据源

侦听器还可以使用数组同时侦听多个源:

 
  1. watch([fooRef, barRef], ([foo, bar], [prevFoo, prevBar]) => {
  2. /* ... */
  3. })

#与 watchEffect 共享的行为

watch 与 watchEffect共享停止侦听,清除副作用 (相应地 onInvalidate 会作为回调的第三个参数传入)、副作用刷新时机和侦听器调试行为。

http://www.yayakq.cn/news/600019/

相关文章:

  • 建设网站怎样分配给用户空间佛山优化公司推广
  • 网站登录密码怎么取消保存云相册网站怎么做
  • 国内做五金加工的订单网站阿里虚拟机建设网站
  • 专业定制网站公司兼职网站高中生在家可做
  • 个人备案网站内容cosy主题wordpress
  • wordpress++分页优化方案官方网站
  • 做网站开发的想接私活做网站的公司找客户
  • 重庆企业型网站建设优书网打不开了
  • 涡阳在北京做网站的名人长沙 php企业网站系统
  • 网页制作与网站建设宝典 pdf如何将自己做的网站放到网上去
  • 建设工程质量安全管理体系网站比较好的做网站的公司
  • 寻花问柳-专注做一家男人的网站猪网站开发的pc或移动端
  • 网站地图怎么做一键导航展会设计公司简介
  • 制作外贸网站公司网页设计心得体会报告怎么写
  • 浙江网站建设多少钱高度重视网站建设 利用网站 接受监督
  • app商城网站开发网站建设方案ppt
  • 宁波网站建设公司优选亿企邦科技股龙头
  • 上海企业网站建设制网站怎么排版
  • 如何优化百度seo排名可以做关键词优化的免费网站
  • 搜索引擎是软件还是网站WordPress更改角色插件
  • 下沙经济开发区建设局网站做名片赞机器人电脑网站是多少钱
  • 如何破解网站后台账号和密码电商主题wordpress
  • 企业网站管理系统多少钱一年找平台推广
  • 增城网站建设推广苏州电子商务网站开发公司
  • 宣传工作网站建设作用株洲做网站的公司
  • 做视频网站带宽要wordpress主题申请软著吗
  • 沈阳网站哪家做的好我国企业网站的建设情况
  • 快速建站wordpress迁移后插件消失
  • 云南网站优化建设网上做流量对网站有什么影响
  • 外贸网站定制开发设计师互联网