反应式默认道具值

Posted

技术标签:

【中文标题】反应式默认道具值【英文标题】:Reactive default prop value 【发布时间】:2022-01-13 06:59:47 【问题描述】:

在下面:

  props: 
    id: 
      type: String,
      default() 
        return this.$route.params.id;
      ,
    ,
  ,

然后,假设父组件不提供值,我希望 id 道具的值在路由更改为新 id 时更改。然而,情况似乎并非如此。我的理解正确吗?有没有办法在这里实现反应?否则我正在考虑设置 required: false ,然后我必须有一些 computedId 计算字段,但我宁愿直接在 props 部分进行

【问题讨论】:

【参考方案1】:

直接在 props 中基于变量提供默认值并不是一个好主意,props 中的 default 被认为是提供静态值而不是反应值


在模板中使用计算值而不是道具可能是更好的做法

<div> computedId </div>


  props: 
    id: 
      type: String,
    ,
  ,
  computed: 
     computedId() 
        return this.value || this.$route.params.id
     
  

【讨论】:

【参考方案2】:

只使用计算不是更好吗?或者使用watch监听id并执行强制刷新功能,但是我真的不知道怎么直接在props中设置action

【讨论】:

以上是关于反应式默认道具值的主要内容,如果未能解决你的问题,请参考以下文章

Vuetify 覆盖默认道具值

使用 get API 调用反应全局状态/道具(没有 Redux)

React.js:将默认值设置为道具

像对象这样的道具的默认值不起作用

使用 TypeScript 3 扩展道具的 React 组件中的默认属性值

如何在 React 组件上设置组件默认道具