惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
K
Kaspersky official blog
V
Visual Studio Blog
博客园 - 聂微东
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
C
Check Point Blog
H
Heimdal Security Blog
The GitHub Blog
The GitHub Blog
Google Online Security Blog
Google Online Security Blog
P
Proofpoint News Feed
AI
AI
The Register - Security
The Register - Security
SecWiki News
SecWiki News
Help Net Security
Help Net Security
T
Troy Hunt's Blog
V
V2EX
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Forbes - Security
Forbes - Security
P
Privacy International News Feed
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
Recorded Future
Recorded Future
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 司徒正美
博客园 - 叶小钗
Y
Y Combinator Blog
人人都是产品经理
人人都是产品经理
S
Security @ Cisco Blogs
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
The Cloudflare Blog
Jina AI
Jina AI
T
The Exploit Database - CXSecurity.com
L
Lohrmann on Cybersecurity
Webroot Blog
Webroot Blog
美团技术团队
N
News and Events Feed by Topic
小众软件
小众软件
Google DeepMind News
Google DeepMind News
G
GRAHAM CLULEY
阮一峰的网络日志
阮一峰的网络日志
B
Blog

Vue.js

AI 特效 shadcn-vue-admin 已升级至 vite8 - V2EX 我真的要放弃 Vue,改用 React 了 - V2EX 请问 vue3 的 onclick 和 @click 有什么区别 - V2EX 求推荐美观、功能全的 vue AI chat 组件 - V2EX [求助贴] 有没有推荐的 vue3 页面设计器 大屏设计器(源码可以拿来二开的 开源 or 收费) - V2EX 有没有大佬在正式项目里使用 rolldown 了 - V2EX 用 reactive 來實現 oo 對象的封裝 - V2EX Vue 的 reactive 会有人专门用吗? - V2EX 大佬们,想在 vue 中集成一个 excel,有什么方案? - V2EX vue3 无法手动控制 keepalive 的缓存| fork 了独立的 keep-alive 组件|支持手动删除缓存或者添加缓存 - V2EX WebStorm 写 个 v-for, cpu 就狂飙 - V2EX Nuxt UI 4 可以免费用 Pro 了 - V2EX Vue2 除了 ele-table-editor,还有没有其他“子表单(inline-formset)”的组件? - V2EX 请问 vue 的 defineEmits 类型如何使用动态键名 - V2EX 屎代码靠我自己骂已经不解气了,佬们来看个笑话 - V2EX 我的 mp4 播放不出来! - V2EX 有一个 8K 行的 VUE 代码文件用什么 AI 可以解耦 - V2EX 求助 Vue 大佬,为什么使用 reactive 数据没有双向绑定? - V2EX uniapp 求助 - V2EX Vue3 编写的最佳实践是怎样的? - V2EX 开发一款轻便简洁的论坛程序 - V2EX VueConf 2025 所有演讲嘉宾及日程已确定, 7 月 12 日,深圳见! - V2EX vue3+ELInput 无法输入的问题 - V2EX 想问一下 pinia 持久化到 localStorage 如何实现有效期 - V2EX 有什么适用于 Vue/Nuxt 的表单/问卷/试卷+设计器库么 - V2EX vue_cli 用到 env 环境变量值特殊字符处理 - V2EX 统计基于 vue 的汽水音乐电脑版用了哪些开源组件 - V2EX ant-design-vue 好像不怎么维护了, vue 有什么比较靠谱的 ui 组件库吗 - V2EX 关于二次封装 element-plus 组件库主题问题 - V2EX 🎉 VueConf 2025 来啦, 7 月 12 日,深圳见! - V2EX vue 怎么 5 个月不更新了 - V2EX 前端 props 单向数据流 vs 状态管理流 你更能接受哪种代码 - V2EX WSL2 + System Proxy 后, vite 启动的项目,随机一部分网络请求变得巨慢,求指导。 - V2EX vue vite 打包 白屏问题 - V2EX 外行搞前端构建环境真的很头疼,有谁能帮忙搞定这个 Nuxt3 开源项目的构建?有偿。 - V2EX vue 指令更新问题 - V2EX 为什么 vue 的 nuxt.js 不跟进 nextjs 的 app route 目录结构 - V2EX 使用 Ant design X vue 组件库怎么解决无法正确展示 MarkDown 格式字符串的问题? - V2EX shadcn, shadcnvue 全是基于 tailwindcss 的,没有基于 unocss 的嘛? - V2EX vue3 的 template typescript 支持稀烂,退坑 - V2EX 组件持久化的问题请教 - V2EX Vue3 tsx 应该用 props 还是 emit 传递事件? - V2EX 话说我怎么就懵逼了呢? Vue3 的泛型组件 generic="T"? - V2EX 请教 Vue3 + typescript 最佳实践问题 - V2EX vue3 纯前端如何生成 icns 格式图片? - V2EX 你们写 vue 一定是按照 vue 的脚手架的目录结构来写吗? - V2EX 大佬们, vue3 新人求教,就没有办法对 ref 包装的 obj 进行解构吗 - V2EX vue3 中 v-show 分页问题 - V2EX el-table 使用 expand 展开倒数第二行时,最下面一行会错乱,我把第一列的数据进行了合并,求问大家怎么解决呀?
VUE 开发求助 - V2EX
andyshz · 2025-07-31 · via Vue.js

这是一个创建于 318 天前的主题,其中的信息可能已经有所发展或是发生改变。

请问 VUE 佬们在开发大表单的时候怎么设计绑定对象的?直接在 data 中声明所有表单项来绑定吗?那岂不是会有很多冗余代码?而且如果多个组件都使用这个对象,对象在传递的时候是不是每个组件中又需要声明一次? 刚从后端学习前端,希望能有大哥指点指点,按照后端的逻辑,这个表单不是应该设计为一个对象,每个组件直接复用对象即可,传递也传递对象,但是现在开发过程中出现不少问题,搜了之后好像说不能绑定 js 的类对象。。。。。。

lyonbot

1

lyonbot      2025 年 7 月 31 日 via Android

你需要的是不是 store 或者说是全局状态管理?

andyshz

2

andyshz      2025 年 7 月 31 日

并不全是吧,主要我只想要这个对象在一个模块中使用,并且希望做到的就是尽可能地减少冗余代码,我对这一块地设计不是很熟悉
VUEX 和 PINIA 可以是模块级的吗

Dlad

3

Dlad      2025 年 7 月 31 日

1 、可以全局声明;
2 、每个页面都声明一次,代码冗余了,因为做到了按需加载,程序执行效率反而更好。
3 、我们项目中的实践是:element ui 打底,常用类型不自行开发了;复杂业务逻辑字段,定制成组件(我好兄弟用自己名字命名的组件,开始看着头痛,后来习惯了);整个表单需要复用,全局弹出呼出——表单、逻辑全复用了。
4 、有些变量,全局各处展示需要实时更新的,放在 pinia store 里面。

我不是职业搞前端的,对最佳实践了解有限。我们自研的 vue 项目按一般软件工程逻辑优化到这个程度。

M003

4

M003      2025 年 7 月 31 日

方法 1. 父级声明出大对象,然后 v-model 将整个大对象 绑定到子组件;子组件内可以定义变量,也可以不声明变量,子组件可以监听到父组件传递给子组件的 value, 然后深拷贝覆盖子组件声明的变量(未声明直接赋值,当然必须声明个变量是 undefined ), 修改这个变量,监听变量变化,$emit 传递出去给父组件。

方法 2. 父组件声明出大对象,对象结构明确。给每个子组件只传递需要的对象中的参数,只修改父组件对象中的某个参数,这样不方便于别的组件读取其他变量。(传递方法和上面一样。)

就不用 store 了。

我这是野路子,自己写代码摸索的。

Elissa

5

Elissa      2025 年 8 月 1 日

data 中一般放一个 form 对象,内部属性对应每个表单内容
```js
data: {
form: {
name: undefine,
age: undefine,
......
}
}
```

优先用组件库的表单组件,这样直接 v-model 绑定 form.xxx 到组件库的组件上

如果需要复杂填写,通过传参或将 form.xxx 传入自定义组件,组件内部自行实现 v-model 或通过事件总线修改值

hafuhafu

6

hafuhafu      2025 年 8 月 1 日

工厂模式。你可以写一个函数用来生成这个对象,而不是直接定义对象。

SaigyoujiNono

7

SaigyoujiNono      2025 年 8 月 1 日 via Android

我一般 export form
然后 form: { ...form }

wangtian2020

8

wangtian2020      2025 年 8 月 1 日

多层数据传递直接扔 pinia store 里,组件要的时候自己去取,想当于一个全局共享的 ref 对象。单层就随便传传了,看你自己怎么方便,不要教条
我甚至单层传递都不用 props 传,我用 ref 调用组件主动 expose 的方法,用方法传参一次性传递。
watch props 的操作我觉得很蠢

layxy

9

layxy      2025 年 8 月 1 日

我也是后端,如果页面复杂,尤其有分步操作,建议上状态管理(vue2 的 vuex 或 vue3 的 pinia),但是使用状态管理也有个操蛋的事情,状态读数据和写数据时分开的,虽然可以在 computed 中 get,set,但是这个机制我没搞明白如果获取的对象是个复杂嵌套对象,我修改深层的属性值,这种用法是否正确

heybwei

10

heybwei      2025 年 8 月 1 日

其实你的问题描述得不是让人很明白,如果能贴一些大概的结构或伪代码就好了

chenluo0429

11

chenluo0429      2025 年 8 月 1 日 via Android

如果你有一个大的表单对象,有很多字段,然后需要用不同的表单组件去提供对应字段的编辑,正确的实践是子组件只关注它要显示和修改的字段值,并不需要关心原生的大对象。
如果每个子组件都要关注原生的对象的话,应当用 provide/inject 实现局部的状态共享。如果状态是全局唯一的话,也可以使用 pinia 这种全局状态管理去做。

faceRollingKB

12

faceRollingKB      2025 年 8 月 1 日

表单设计不建议使用 vuex 或 pinia ,这两个都是用来管理全局变量的,管理局部模块化数据的话就有点吃力,我是使用 vue 自带的 providers ,再根据自己的想法封装了一套依赖注入来实现的,整体表单通过 FormModel 管理数据和表单项配置,并共享给整个组件树,每个表单项也都有专门的 FormControl 来对接表单的各种操作,但是从 0 到 1 的成本有点高,你要有心理准备

SchwarzeR

13

SchwarzeR      2025 年 8 月 1 日

vue3 如果需要局部状态管理,业务上存在大量复用有必要封装的话,并且不需要考虑 ssr 的情况下,可以通过声明一个 Composition api 的函数( hook )做一个局部的变量初始化,然后用在需要的地方。这个在 https://cn.vuejs.org/guide/reusability/composables 亦有记载

但是如果会涉及到 ssr 的话,pinia 也可以做局部的模块化声明,就是麻烦一点
```
// 需要传参根据情况改变内容上的时候就给函数加参数
function useXXXFormData() {

const onShow = ref(true)

const formContextState = reactive({
xxx:12123,
xxl:123,
process:123,
onSync: false
})

// 内部使用 vue 的生命周期 api 比如销毁时清理
onBeforeUnmount(() => {
console.log("unmounted!");

})

return {
onShow,
formContextState
}
}
```
直接拿代码给你比方?
在需要拿来初始化调用的时候直接
const formstate = useXXXFormData()

不知道我理解的正确不正确

faceRollingKB

14

faceRollingKB      2025 年 8 月 1 日

示例:

<script setup lang="ts">
const form = Provide(FormModel<TData>);
form.mode = FormMode.edit;
form.items = [
describeControl({
type: controlWrap('t-input'),
label: 'xxx:',
prop: 'yyy',
value: '',
validator: [FormValidator.required, FormValidator.max(50)],
options: {
placeholder: '请输入 xxx'
}
}),
];
form.resetData();
function onConfirm() {
form
.validate()
.then(() => {
return service.save(form.data);
})
.then(() => {
MessagePlugin.success('操作成功');
})
.catch((err) => {
MessagePlugin.error(err?.message || err);
});
};
</script>

<template>
<div v-if="form.data" v-grid.form="2" class="ph-20 gr-24 gc-12 mb-24">
<q-form-item prop="aaa"></q-form-item>
<q-form-item prop="bbb"></q-form-item>
<q-form-item v-if="form.data.bbb === '???'" prop="ccc"></q-form-item>
<q-form-item prop="ddd"></q-form-item>
</div>
</template>

<style scoped lang="less"></style>

xingyuc

16

xingyuc      2025 年 8 月 1 日

不同场景不同用法,写的再优雅也抵不过 AI 的冲击

jspatrick

17

jspatrick      2025 年 8 月 1 日

页面声明大对象,再 provide/inject ,跨页面考虑 store

wentx

18

wentx      2025 年 8 月 1 日

vibe 了。。 也不知道 cursor 是咋写的,但是能用