V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  liuhuihao  ›  全部回复第 2 页 / 共 4 页
回复总数  80
1  2  3  4  
@yusheng88 #67 没理解你的意思。我们这边接口针对 string 、数组、对象 类型前端确实是不需要 判 null 的,因为约定的是啥类型返回就是啥类型,空值也一样,string 类型为空时当然应该为空字符串,null 又不是字符串类型,类型定义和数据返回的类型应该一致。
数据定义和返回必须一致,这个我支持。你可以看下 我 62 楼的回复,有些情况下 null 还是有必要的。比如一个非必填输入框只支持填写任意的数字,那么这种情况下 我这边通常在定义这个字段的时候就定义为 number | null ,用 null 来表示“没有填”。
@yusheng88 产品和业务决定的应该是 字段是否可以为空,帖子讨论的为空的时候接口是否该返回 null 。很多值为空时候返回其实是可以在接口设计阶段避免的。
个人理解,如字符串 null 和'' 其实是一个含义都表示没填,数组[] 和 null 其实也是一个含义都表示没有。对象则应该在对象内部增加字段判断是否存在,Number 和 Boolean 大多数情况下也不需要返回 null 。
个人观点

String 空值情况:空值一律返回'',理由是一般情况下字符串字段都是用来展示用的,如有逻辑判断<用户是否填了>这个字段,那可以增加一个 boolean 字段表示是否填了, 但这种情况业务上很少,因为作为入参的时候一个输入框没填其实 = 空字符串

Number 空值需要根据业务场景来处理,比如“好友数”等各种计数的空值可以是 0 ,男女等 未选择的话可以用 -1 表示。但如果是一个非必填数字输入框,可以输入任意值的这种,null 值 应该是需要的

Boolean 同 Number ,需要根据业务场景来处理。

Array 空值一律应为 []

Object 不应返回 null ,比如“人”这个对象有个字段叫“父亲信息”,有的人可能没有父亲,这种情况 “父亲信息” 字段不应返回 null ,而是在“父亲信息”这个对象里面的 “是否存在父亲”字段做判断

总结我的观点:除了 Number 和 Boolean 可以返回 null ,字符串、对象、数组都不应返回 null
134 天前
回复了 Zorro825 创建的主题 程序员 PC 桌面软件需要实现的一个功能。
简单的来说 用按键精灵写个脚本就行了
144 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
我理解的 hooks 拆封
export default function (deps) {
const data = ref('')
const data2 = ref('')

const doSomeThing = ()=>{
XXX
}

watch(deps, XXX)

onMounted(()=>{
XXX
})

return {data,data2,doSomeThing}
}
144 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
@chenliangngng #10 你再仔细看看 lz 的代码,并不是只拆分到 reactive ,他左侧整张图都是一个 hooks 只不过底部的 return 没有截上,我认为 lz 的写法是没有问题的,右侧的抽象反而是抽象了个寂寞
144 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
@chill777 明显是你的写法更合理啊,我很好奇右侧那种写法 生命周期一类的咋写的,写在页面逻辑里吗?那还抽象个锤子。另外多个页面 import 的话,hooks 写法每次都是 return 一个新的对象,不会互相影响,右侧那种写法不就变成单例的了么,各个页面互相影响
144 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
左侧的是标准 hooks 写法,右侧是给拆成了一个一个 export 的 方法?右侧这个写法如果能实现功能的话我理解就是一个 utils 类似的东西,不是 hooks ,右侧这种写法 watch 、onMounted 咋写呢?感觉右侧这样限制很大,不是 hooks 写法了已经。很明显你的抽象方式是正确的
150 天前
回复了 qingshui33 创建的主题 Vue.js vue table 组件求教
@siguapajamas 这个我也不太清楚有没有哈,我也是临时看的源码
150 天前
回复了 qingshui33 创建的主题 Vue.js vue table 组件求教
@qingshui33 #3 看下 element 的源码吧,element 是在 table 层建了一个 store ,然后 el-table-column mounted 的时候 调用了 store 的 insertColumn 保存起来。其实就相当于一个 局部的 store 大家都共享里面的值。

element-plus/packages/components/table/src/store/index.ts #73
element-plus/packages/components/table/src/table-column/index.ts #145
@WangLiCha 你 打印 的时候这个对象里其实还没有 targetNode 字段,这也就是为啥 JSON.stringify 里没有,这个 targetNode 字段是在你 console.log 代码执行之后、点击 devtools 对象的展开之前 才被添加到对象上的。
@liuhuihao

const a = {a:{}}
console.log(a,JSON.stringify(a))
a.targetNode=123

简单的代码可以试一下
console.log 打印的是对象的引用,你后给这个对象加上属性也会出现在 log 里
原因是 devtools console.log 的时候有些时候是你点击展开的时候才去获取这个值而不是打印的时候的值。
至于 console.log 和 JSON.stringify 不一样的原因那就他太多了,toJSON 方法、undefined 、非可枚举一类的都不会出现在 JSON.stringify 里,但你发的这个问题应该不是这个导致的。单纯是你打印的时候本身就是 undefined ,然后在你展开属性的时候获取的是改后的值
155 天前
回复了 Heimerdinger 创建的主题 加密货币 贷了 20 万梭哈,不知道选什么币
兄弟,你这和赌博无异。可要想清楚了
168 天前
回复了 yuhangch 创建的主题 程序员 突然感觉 tailwindcss 不香了
@murmur #36 至于上面你举得 btn 的例子,tw 文档里面说了 这种复用的情况应将 btn 拆成一个组件。包括为什么不直接内联,文档上也都有说明。
https://www.tailwindcss.cn/docs/utility-first#maintainability-concerns
168 天前
回复了 yuhangch 创建的主题 程序员 突然感觉 tailwindcss 不香了
@murmur #36 tailwind 有严格的设计标准用起来最舒服。就算没有严格的设计标准它也提供了 w-[5px] 这种写法
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2923 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 15:16 · PVG 23:16 · LAX 08:16 · JFK 11:16
Developed with CodeLauncher
♥ Do have faith in what you're doing.