0
私はリアクションチュートリアルに従っています。少し説明が必要です。 App.jsコンポーネントのレンダリング機能では、広がり演算子は、コンテスト配列のマッピングによって公開されたコンテストオブジェクトで使用されます。 ContestPreview.jsコンポーネントはプロパティを名前なしでプロップとしてどのように使用できるのですか。この場合、スプレッド演算子はなぜ使用されていますか?スプレッドまたはレストオペレータの明確化ES6
ありがとうございました。
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
<div {...props} />
の文脈では
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;
これらのオブジェクトのプロパティを広めているので便利な方法です。あなたは "休憩"オペレータの意味は? – ZekeDroid
@ZekeDroidこの例では、 "rest"はありませんが、 'const [a、b、... others] = [1,2,3,4,5,6];' – loganfsmyth
'...'は演算子ではないので、[* punctuator *](http://www.ecma-international.org/ecma-262/7.0/index.html#sec-punctuators)と[ * rest *](http://www.ecma-international.org/ecma-262/7.0/index.html#prod-AssignmentRestElement)および[* spread *](http://www.ecma-international.org/ ecma-262/7.0/index.html#prod-SpreadElement)の構文を使用します。 MDN [* Rest parameters *](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/rest_parameters)と[* Spread syntax *](https://developer.mozillaを参照してください。 org/ja/docs/Web/JavaScript/Reference/Operators/Spread_operator)。 – RobG