EDIT 2: React 0.14.x
Teraz można definiować stateless functional components komponentów, które nie wymagają skomplikowanych haków cyklu zdarzeń lub stan wewnętrzny
const PieceList = ({pieces, onDeletePiece2}) => {
if (!onDeletePiece2) return;
return (
<div className="piecesTable">
{pieces.map(x => (
<Pieces pieceData={x} onDeletePiece3={onDeletePiece2}>
))}
</div>
);
};
EDIT 1: ES6
W miarę jak ES6 staje się coraz bardziej widoczny, może również uniknąć problemów z kontekstem nitpicky za pomocą ES6 arrow function.
class PieceList extends React.Component {
renderPiece(piece) {
return <Piece pieceData={piece} onDeletePiece3={this.props.onDeletePiece2} />;
}
render() {
if (!this.props.onDeletePiece2) return;
return (
<div className="piecesTable">
{this.props.pieces.map(piece => this.renderPiece(piece))}
<div>
);
}
}
Aby uzyskać to do pracy w większości środowisk, trzeba by „transpile” go przy użyciu coś jak babel.js
Szybka odpowiedź jest taka, że trzeba wiązać prawidłowego this
do map
zwrotna przekazując this
jako drugi arg
this.props.pieces.map(..., this);
To może być lepszy sposób napisać com składową tho
var PieceList = React.createClass({
renderPiece: function(piece) {
return <Piece pieceData={piece} onDeletePiece3={this.props.onDeletePiece2} />;
},
render: function() {
if (!this.props.onDeletePiece2) return;
return (
<div className="piecesTable">
{this.props.pieces.map(this.renderPiece, this)}
</div>
);
}
});
Odnośnie komentarz o map
var x = {a: 1, b: 2};
['a', 'b'].map(function(key) {
// `this` is set to `x`
// `key` will be `'a'` for the first iteration
// `key` will be `'b'` for the second iteration
console.log(this[key]);
}, x); // notice we're passing `x` as the second argument to `map`
wyświetli
// "1"
// "2"
Wskazówki jak drugi argument do map
można ustawić kontekst dla tej funkcji. Po wywołaniu funkcji this
będzie ona równa drugiej zmiennej, która została wysłana do map
.
To podstawy JavaScriptu i powinno się przeczytać więcej here
dzięki. hmmmmm, podążam za tobą, ale nie do końca, czy możesz to wyjaśnić? – bignore59
Ciekawy sposób struktury komponentu, dzięki za udostępnienie. Nadal nie jestem pewien, czy rozumiem, jak to this.props byłyby dostępne w mapie funk- ale trzeba kopać głębiej w javascript, jak jej nie mój główny język. Czy mogę po prostu wyciąć/wkleić twój przykład, aby mój kod działał? Dzięki – bignore59
Dzięki za tak dobrze przemyślane odpowiedzi z linki zawarte, naprawdę to doceniam! – bignore59