当前位置: 首页 > 知识库问答 >
问题:

Spreading操作符的工作原理与在React JS[duplicate]中指定对象不同

钱劲
2023-03-14

当我执行以下操作时,一切正常:

this.state.sections.map({a,b})=

但是,当我执行以下操作时(我认为这是等效的),我会得到一个错误,说是预期的:

this.state.sections.map({a,b})=

为什么会这样?..{a,b}在JS中是否等同于a,b


共有1个答案

韩华美
2023-03-14

它们在JSX上下文中是不等价的:

// For given function component
const MenuItem = ({ a, b }) => <></>

// Use cases
(props /* {a,b} */) => <MenuItem {...props} />
<MenuItem a={a} b={b} />
<MenuItem { ...{a,b} }/>

// Transpiles to
React.createElement(MenuItem, { a, b });
// Syntax Error
// as this JSX doesn't transpile to React.createElement 
<MenuItem {a, b} />

/*
Unexpected token, expected "..." (1:11)
> 1 | <MenuItem {a, b} />;
*/

但在JS中,它们确实会产生相同的结构:

a = 5;
b= 7;
{ a, b } // { a: 5, b: 7 }
{ ...{ a, b } // { a: 5, b: 7 }

请注意babel编译器和JS传输的代码之间的差异。

  • 查看巴贝尔游乐场查看结果。
 类似资料:
  • 我不想为了进行json转换而定义额外的类型。我使用的库需要一个对象作为输入,然后对该数据执行http操作,因此我不能使用硬编码的json字符串作为输入。 我试图删除getter和setter,或者离开getter并删除字段,但不起作用。有人知道怎么解决这个问题吗?

  • 本文向大家介绍js new操作符的原理相关面试题,主要包含被问及js new操作符的原理时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 创建一个类的实例:创建一个空对象obj,然后把这个空对象的proto设置为构造函数的prototype。 初始化实例:构造函数被传入参数并调用,关键字this被设定指向该实例obj。 返回实例obj。

  • 是否有调用ObjectLong.longValue()方法来比较Long和Long或其他方法?

  • 我完全卡住时集成HOC在我的react.js项目。 这是我的路线文件 我对此完全崩溃了,但没有摆脱那个问题。为什么我的控制台中的不显示值 有任何问题与反应和反应路由器的版本 提前谢谢你!!!

  • 一、mitmproxy的工作原理 Mitmproxy是一种非常灵活的工具。准确了解代理过程的工作原理将有助于您创造性地部署代理,并考虑其基本假设以及如何解决这些假设。本文档详细介绍了mitmproxy的代理机制,从最简单的未加密显式代理开始,到最复杂的交互操作-在存在服务器名称指示的情况下,对受TLS保护的流量进行透明的代理。 二、显式HTTP 配置客户端以使用mitmproxy作为显式代理是拦截

  • 1、Register、Gateway、BusinessWorker进程启动 2、Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己 3、Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中 4、Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给Business