React: 想法:支持jsx语法中的对象文字属性值简写

创建于 2014-11-16  ·  3评论  ·  资料来源: facebook/react

这个想法是能够做到:

{this.state.list.map((item, key) => <MyComponent {item, key} />)}

你会怎么想?

所有3条评论

我倾向于说不。 我们已经讨论了很多关于使用不同语法的内容,并且我们正在尝试将其保持在尽可能少的程度。 添加{...spread}已经很重要了。

抄送@sebmarkbage

我们尝试将语法讨论保留在: https ://github.com/facebook/jsx 这样我们就可以让更广泛的团队为这种语法做出贡献,使其值得为语言增加额外的权重。

我认为<Foo {item} /><Foo {...item} /><Foo item />之间的区别可能太令人困惑了。 最后两个已经支持。

不过我喜欢你的想法。 如果你对此有强烈的感觉,你应该在https://github.com/facebook/jsx打开一个问题

https://github.com/facebook/jsx/pull/118

^ 此处讨论的对象表达式语法提案。

我认为这之间的区别 ,可能太混乱了。

混乱可能是相对的。 <Foo item />不是很有用,因为它总是评估为 {item: true}。 事后看来,它感觉非常有限,但我可以从它的 html 基因中理解它的行为。 我个人还没有发现它有多大用处。

如果您从 ES8 对象表示法的角度来看,就不会感到困惑。 {item}{item: item}的简写。 {...item}是扁平化/浅拷贝/传播到新对象的简写。

一旦有人了解 jsx 转换为h(name: string | Component, props: {[name]: any}, ...children) 。 ObjectExpression 自然而然地落入其中。

令人困惑的是,不支持<Foo {x} />但支持<Foo {...x} /> 。 解决方法是
<Foo {...{x}} />这更令人困惑。

此页面是否有帮助?
0 / 5 - 0 等级