(state = {}) => state 的含义是什么?

10

我正在使用React构建一个应用程序,在其中一个样板项目中找到了一行代码。

(state = {}) => state

有人能解释一下上面那行代码是什么意思吗?这是 JavaScript ES6 标准。

实在不确定这个问题怎么会得到这么多赞同票 - Mulan
3个回答

9

这是一个返回其输入的箭头函数。如果输入未定义,它将成为默认值 {}。

您可能已经在使用redux的“connect”时看到它,作为将存储状态映射到连接组件所使用的投影的函数。如果没有可用的状态,则提供空对象。


8

这是一个带有默认参数的箭头函数,如果没有提供输入,则返回其输入或空对象。它类似于这个 es-5 函数:

其中 arrow functiondefault parameter 需要翻译。
function(){
    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
    return state;
}

1
是的,现在它们应该是等效的。 - Oriol
很奇怪,我发帖时没有看到这个答案。 - Patrick Roberts
1
@PatrickRoberts:当你明确传递 undefined 时,它不起作用。 - Bergi
@Bergi 如果你明确地将 undefined 传递给默认参数,那么默认值仍然会覆盖它吗?这似乎不太直观。 - Patrick Roberts
@ruakh 谢谢!我忘记改变URL了... :) - baao
显示剩余4条评论

3

您可能更熟悉这种表示方法:

function(state) {
    if (!state) state = {}; // state defaults to {}
    return state;
}

你看到的是ES6语法糖: function(state = {}) { ... } 是默认值的简写(state 默认为 {}),而 (a) => b 则是 function(a) { return b } 的简写。将它们组合起来,你就得到了 (state = {}) => state

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接