![](/img/trans.png)
[英]ES6 Spread operator (Rest Parameter) - syntax fails with Safari 9
[英]Spread or Rest operator clarification ES6
我正在關注反應教程,我需要一點澄清。 在App.js組件的render函數中,spread運算符用於通過contests數組映射公開的競賽對象。 ContestPreview.js組件如何在沒有命名屬性的情況下將其用作道具,為什么在此實例中使用擴展運算符?
謝謝。
App.js
import React from 'react';
import Header from './Header';
import ContestPreview from './ContestPreview';
import data from '../testData';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
pageHeader: 'Naming Contests',
contests: []
};
}
componentDidMount() {
this.setState({
contests: data.contests
});
}
render() {
return (
<div className='App'>
<Header message={this.state.pageHeader} />
<div>
{this.state.contests.map(contest =>
<ContestPreview key={contest.id} {...contest}
/>
)};
</div>
</div>
);
}
}
export default App;
ContestPreview.js
import React from 'react';
const ContestPreview = (contest) => (
<div className='ContestPreview'>
<div className='category-name'>
{contest.categoryName}
</div>
<div className='contest-name'>
{contest.contestName}
</div>
</div>
);
export default ContestPreview;
在上下文中
<div {...props} />
這里的擴展語法( ...
)特別是JSX,它有自己的JSX定義行為,因為它不是正常的ES6擴展,也不是建議的對象擴展。
JSX擴展語法將獲取給定對象的所有屬性,並將它們作為props
一部分傳遞給子組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.