在JSX中使用spread操作符react处理props
之类的对象似乎无法输出我所期望的结果。
<Text {...this.props} />
似乎被渲染为style=“foo”
,其中应该是style:“foo”
,如本文所述。我在任何地方都找不到这个文件。我对react完全是新手,我试图理解它的语法,想知道react是否在内部做了类似这样的未记录的事情。
一个简单的测试突显了我的困惑:
const x = {...{test:1}}.test;
alert(x);
警报了
1.
这肯定不会编译:
<Text test: 1 />
解构从对象中提取键值对。
看看这个例子
const obj = {
a: 'a',
b: 'b'
}
现在,解构obj将导致
const { a, b } = obj;
console.log(a); // 'a'
console.log(b); // 'b'
如果您在将对象作为React Component的道具传递时对其进行了重构,则会发生以下情况
<Component {...obj} />
这将在内部转换为
<Component a={a} b={b} />
因此,如果要将样式作为道具传递给组件,则应按照以下步骤进行传递:
const style = {
background:'yellow'
}
<Component style={style} />
或
const obj = {
style = {
background:'yellow'
}
}
<Component {...obj} />
这记录在React留档中。
要在此处复制粘贴,它会声明:
如果您已经有道具作为对象,并且您想在JSX中传递它,您可以使用...作为“传播”运算符来传递整个道具对象。
它是完全有效的,有文档记录的JSX。
此外,它们提供了向组件传递道具的两种不同方法的示例,一种是离散属性,另一种是扩展对象,并注意到就接收道具的组件而言,它们是相同的:
function App1() {
return <Greeting firstName="Ben" lastName="Hector" />;
}
function App2() {
const props = {firstName: 'Ben', lastName: 'Hector'};
return <Greeting {...props} />;
}
把这个扩展到上面的例子,你可以认为这两个是等价的:
function App1() {
return <Text test={1} />;
}
function App2() {
const props = {test: 1};
return <Text {...props} />;
}
至于它在引擎盖下如何工作的细节,请记住这是一个透明的过程,所以我们不需要太在意它在引擎盖下是如何工作的——只要你知道它们是等效的,一条是“捷径”,你就可以了。
还值得注意的是,文档中规定应谨慎使用扩展方法,因为“扩展属性可能很有用,但它们也可以轻松地将不必要的道具传递给不关心它们的组件,或者将无效的HTML属性传递给DOM。”
希望这有助于澄清你的问题!
Markdown 标准 本身所包含的功能有限,所以产生了许多第三方的扩展语法,如 GitHub Flavored Markdown。 这里只介绍众多扩展语法中的一部分内容,它们在不同平台或工具的支持程度不同,请参考具体平台或工具的文档和说明来使用。 删除线 代码块和语法高亮 表格 Task List CommonMark CommonMark 试图将碎片化的 Markdown 实现和扩展进行标准化
问题内容: 的意义是什么 我正在尝试那样使用它 问题答案: 它被称为传播属性,其目的是使道具的传递更加容易。 让我们假设您有一个接受N个属性的组件。如果数量增加,将这些信息传递下去可能是乏味且笨拙的。 因此,您可以这样做,将它们包装在一个对象中并使用扩展符号 它将把它解压缩到组件上的props中,即,仅当将props传递给另一个组件时,才“永远” 在函数内部使用。照常使用打开包装的道具。
Markdown 的目标是实现「易读易写」。 可读性,无论如何,都是最重要的。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响,包括 Setext、atx、Textile、reStructuredText、Grutatext 和 EtText,而最大灵感来源其
问题内容: 我正在尝试使用python探索Elasticsearch集群,而我是Elasticsearch的新手。如果使用Marvel / Sense,则可以使用查看集群的架构 。在Python中有等效的方法吗?如果是这样,我可以看到集群的“模式”! 更一般而言,我想以编程方式发现所有索引,每个索引的doc_types,对doc_types的字段进行分类(它们是文本字符串,整数,浮点数,数字取值范
在扩展查询模式中可以使用如下特殊操作符: 或(OR)操作符: hello | world 非(NOT)操作符: hello -world hello !world 字段(field)搜索符: @title hello @body world 字段限位修饰符(版本Coreseek 3/Sphinx 0.9.9-rc1中引入): @body[50] hello 多字段搜索符: @(
在这段代码中是什么意思?