React中调用lodash/fp的get方法,如何正确使用默认值?
解决lodash/fp中_.get默认值不生效的问题
嘿,我完全懂你现在的困惑!lodash/fp 和普通版 lodash 在API设计上有个核心差异——它是完全柯里化的,而且采用了「数据最后(data-last)」的参数顺序,这就是你传第三个参数没起作用的关键原因。
先搞清楚两者的区别:
- 普通lodash的
_.get参数顺序是:_.get(对象, 路径, 默认值) - 但lodash/fp的
_.get是柯里化函数,参数顺序变成了:_.get(路径, [默认值])(对象)
你之前写的_.get("email", profile.profile, "test")之所以无效,是因为fp版的_.get在接收到第二个参数(也就是你的profile.profile对象)时,就直接执行了取值操作,第三个参数根本没被识别成默认值——它只把前两个参数当成「路径」和「对象」,自然就忽略了第三个。
正确的写法示例:
把你的代码改成下面这样,默认值就会正常生效了:
import _ from "lodash/fp" // 方式1:一次性柯里化调用 console.log("first:", _.get("email", "test")(profile.profile)) // 方式2:拆分写法(更符合函数式风格,也方便复用) const getEmailWithFallback = _.get("email", "test") console.log("first:", getEmailWithFallback(profile.profile)) // 原来的第二种判断写法可以直接替换成上面的方式,不用重复调用_.get啦
额外小提示:
lodash/fp的所有函数都是「数据最后」的设计,这样做是为了更好地配合函数组合(比如_.flow、_.compose)使用,如果你习惯了普通lodash的参数顺序,刚开始用fp版确实容易踩这个坑,下次遇到类似问题先留意下参数顺序哦~
内容的提问来源于stack exchange,提问作者WilliamKF
相关产品推荐
相关产品推荐

