EDIT 2: React 0.14.x
è possibile definire stateless functional components per i componenti che non richiedono ganci eventi del ciclo di vita complesse o stato interno
const PieceList = ({pieces, onDeletePiece2}) => {
if (!onDeletePiece2) return;
return (
<div className="piecesTable">
{pieces.map(x => (
<Pieces pieceData={x} onDeletePiece3={onDeletePiece2}>
))}
</div>
);
};
EDIT 1: ES6
Mentre ES6 continua a diventare più prominente, può anche evitare problemi di contesto nitpicky utilizzando un 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>
);
}
}
Per ottenere questo per l'esecuzione in maggior parte degli ambienti, avresti bisogno di "transpile" usando qualcosa come babel.js
La risposta più immediata è che avete bisogno di impegnare la corretta this
al map
richiamata passando this
come il secondo arg
this.props.pieces.map(..., this);
Questo potrebbe essere un modo migliore per scrivere il vostro com Ponent 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>
);
}
});
Per quanto riguarda i suoi commenti su 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`
uscita sarà
// "1"
// "2"
Notate come il secondo argomento di map
possibile impostare il contesto per la funzione. Quando si chiama this
all'interno della funzione, sarà uguale alla seconda variabile inviata a map
.
Si tratta di nozioni di base di JavaScript e si dovrebbe assolutamente leggere su più here
grazie. hmmmmm, io seguo, ma non fino in fondo, puoi elaborare per favore? – bignore59
modo interessante per strutturare un componente, grazie per la condivisione. Non sono ancora sicuro di aver capito come sarebbero disponibili i this.props nella funzione map, ma ho bisogno di approfondire javascript in quanto non è la mia lingua principale. posso semplicemente tagliare/incollare il tuo esempio per far funzionare il mio bit di codice? grazie – bignore59
Grazie per la risposta così ben congegnata con i collegamenti inclusi, lo apprezzo davvero! – bignore59