typescript - 作为对象的 Vue 道具的反应性
问题描述
我有一个组件,它有一个名为value
(用于v-model
)的道具,道具的类型是一个对象。这是 prop 的示例值value
:
{type: "column": {value: {column: "col1", anotherattr: "test"}}}
然而; 如果我将以下值传递给组件,则会导致反应性问题,因为anotherattr
此处未定义:
{type: "column": {value: {column: "col1"}}}
我希望组件能够验证架构并使属性自动响应,因为anotherattr
它实际上是一个可选属性。
这里建议的方法是什么?我考虑过使用validator
,但它看起来像一个反模式,因为它用于验证。这个问题有什么实用的方法吗?(也许 Typescript 有帮助?)
解决方案
使用 Typescript,您可以执行以下操作:
export class YourProp {
constructor(
public value: YourValue
)
}
export class YourValue {
constructor (
public columnName: String,
public anotherAttr: String = "default" // give it a default value since its optional
)
然后不要将道具作为对象处理,而是作为 YourProp 的实例。
推荐阅读
- javascript - 将数据从客户端传递到服务器
- java - 如何比较 2 个文件并删除不存在的行?
- php - Laravel 与枢轴的多态关系
- c# - 获得不同的列表后,在查询中使用结果
- sql-server - 在复杂查询中使用简单查询会产生错误“无效的列名”
- asp.net-mvc - 如何在 ASP.NET MVC Windows 身份验证 Web 应用程序的整个会话中存储登录详细信息?
- java - 如何使用 Supplier 作为 Fallback 定义 BiFunction 以生成一些对象?
- java - 应用程序崩溃但代码中没有错误
- python - 凯拉斯。是否可以将一层的批量输出用作下一层的输入?
- django - 我可以在具有共享外键值的两个模型之间创建相关的 Django 字段吗?