...
在这个React(使用JSX)代码中做什么,它叫什么?
<Modal {...this.props} title='Modal heading' animation={false}>
三个点代表ES6中的扩展运算符。它允许我们在JavaScript中做很多事情:
>
var shooterGames = ['Call of Duty', 'Far Cry', 'Resident Evil'];
var racingGames = ['Need For Speed', 'Gran Turismo', 'Burnout'];
var games = [...shooterGames, ...racingGames];
console.log(games) // ['Call of Duty', 'Far Cry', 'Resident Evil', 'Need For Speed', 'Gran Turismo', 'Burnout']
解构数组
var shooterGames = ['Call of Duty', 'Far Cry', 'Resident Evil'];
var [first, ...remaining] = shooterGames;
console.log(first); //Call of Duty
console.log(remaining); //['Far Cry', 'Resident Evil']
结合两个物体
var myCrush = {
firstname: 'Selena',
middlename: 'Marie'
};
var lastname = 'my last name';
var myWife = {
...myCrush,
lastname
}
console.log(myWife); // {firstname: 'Selena',
// middlename: 'Marie',
// lastname: 'my last name'}
三个点还有另一种用途,称为剩余参数,它可以将函数的所有参数作为一个数组。
函数参数作为数组
function fun1(...params) {
}
被称为扩展属性,正如其名称所示,它允许对表达式进行扩展。
var parts = ['two', 'three'];
var numbers = ['one', ...parts, 'four', 'five']; // ["one", "two", "three", "four", "five"]
在这种情况下(我将简化它)。
// Just assume we have an object like this:
var person= {
name: 'Alex',
age: 35
}
这是:
<Modal {...person} title='Modal heading' animation={false} />
等于
<Modal name={person.name} age={person.age} title='Modal heading' animation={false} />
简而言之,我们可以说这是一条捷径。
这是财产分摊符号。它是在ES2018中添加的(阵列/iterables的扩展更早,ES2015),但它通过transpilation在React项目中得到了很长时间的支持(作为“JSX扩展属性”,尽管您也可以在其他地方进行,而不仅仅是属性)。
{…this.props}
将props
中的“自己的”可枚举属性作为您正在创建的Modal
元素上的离散属性展开。例如,如果。道具
包含a:1
和b:2
,然后
<Modal {...this.props} title='Modal heading' animation={false}>
会和
<Modal a={this.props.a} b={this.props.b} title='Modal heading' animation={false}>
但它是动态的,所以无论道具中有什么“自己的”属性都包括在内。
由于
孩子
是props
中的“自己”属性,传播将包含它。因此,如果出现此内容的组件有子元素,它们将被传递给Modal
。将子元素放在开始标记和结束标记之间只是语法糖
class Example extends React.Component {
render() {
const { className, children } = this.props;
return (
<div className={className}>
{children}
</div>
);
}
}
ReactDOM.render(
[
<Example className="first">
<span>Child in first</span>
</Example>,
<Example className="second" children={<span>Child in second</span>} />
],
document.getElementById("root")
);
.first {
color: green;
}
.second {
color: blue;
}
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
问题内容: 什么是在这个做反应(使用JSX)代码,什么是它叫什么名字? 问题答案: 那是 财产传播符号 。它是在ES2018中添加的(用于数组/可迭代对象的版本早于ES2015),但是它在React项目中已经通过翻译长期得到支持(“ JSX传播属性 ”,即使您也可以在其他地方这样做) )。 将 “自己的”可枚举属性作为离散属性 散布 在要创建的元素上。例如,如果包含和,则 将与 但是它是动态的,因
问题内容: 什么是在这个做反应(使用JSX)代码,什么是它叫什么名字? 问题答案: 那是 property spread notation。它是在ES2018中添加的(用于数组/可迭代对象的版本更早于ES2015),但是随着时间的流逝,它通过转译得到了支持(作为“ JSX spread attributes ”,即使你也可以在其他地方这样做,而不仅仅是属性) 。 将 “自己的”可枚举属性作为离散属
“{...X}”这个代码是什么意思?
我发现了一个很受欢迎的问题的答案,下面的代码是: 为什么...是必需的?如果我省略了,巴别就会对我抱怨说: 它看起来像扩展语法,但是一个布尔值。我找不到能解释到底发生了什么的医生。
我正在设计一个网站,在导航我有2个链接有下拉菜单(“关于”和“服务”)。当你将鼠标悬停在链接上时,下拉菜单就会出现,然后当你点击链接时,下拉菜单就会消失,然后如果你再点击它,下拉菜单就会再次出现。所以基本上,为了进入那个页面,你必须三次点击链接。有没有人知道我可以做什么来改变这个,这样你就可以在点击一次后进入页面? 这是导航在我的HTML代码中的样子: 以下是相关的CSS: 编辑:我发现下拉菜单是
我能用一个lambda表达式来完成这一切吗?