Ho il seguente reagiscono componente che recupera i dati Ajax sul caricamento della pagina iniziale, in questo modo:rerender Reagire componente con il nuovo parametro di query AJAX Valori
var MyTable = React.createClass({
getInitialState: function() {
return {
rows: [
['Something, ' '],
['Something else', ' '] ]
};
},
componentDidMount: function() {
var self = this;
$.get('http://domain.com/api/Orders/from-date/' + fromDate + '/to-date/' + toDate,
function(result) {
var newState = React.addons.update(this.state, {
rows: {
0: {
1: { $set: result }
}
}
});
this.setState(newState);
}.bind(this)
);
},
render: function() {
return (
<Table
rowHeight={50}
rowGetter={(rowIndex) => {
return this.state.rows[rowIndex];
}}
rowsCount={this.state.rows.length}
onRowClick={this._onRowClick}
width={1000}
height={342}
groupHeaderHeight={40}
headerHeight={0}>
<ColumnGroup label="Products"
fixed={true}>
<Column label=""
width={col1}
dataKey={0} />
<Column label=""
width={700}
dataKey={1} />
</ColumnGroup>
</Table>
);
}
});
MyTable = React.createFactory(MyTable)
React.render(MyTable(),
document.getElementById('my-table-container')
);
Il mio problema è che non riesco a rerender componente quando la data è cambiato da datepicker quindi il parametro data Ajax cambia e deve essere fatta un'altra richiesta con questi nuovi valori.
Quello che ho provato:
$(function(){
$("#calculate-orders").on("click",function(){
fromDate = document.getElementById("from-date").value;
toDate = document.getElementById("to-date").value;
React.render(MyTable(),
document.getElementById('my-table-container')
);
})
})
Ma nulla sembra accadere. Come posso risolvere questo? E può essere fatto solo con JavaScript/jsx, senza la necessità di flusso e, soprattutto, senza node.js?
Ps. Sto usando FixedDataTable in questo esempio.
Non puoi semplicemente legare il DatePicker al tuo componente usando un parametro di evento, in questo modo ogni volta che l'evento viene ricevuto lo stato degli aggiornamenti dei componenti, che wi Il tuo componente sarà nuovamente sottoposto a rendering. –
Sfortunatamente, non penso che funzionerà? Per quanto ho capito, funzionerebbe solo se ci fosse una relazione genitore-figlio? https://facebook.github.io/react/tips/communicate-between-components.html - ma in questo caso ho creato un'applicazione in MVC e come ho avuto modo di conoscere reagire, l'ho usata sempre di più per diversi sezioni, tuttavia i selettori di date (da/a data) e select dropdown (lingua) non sono componenti di reazione del genitore - sono semplicemente markup html. :/ – Dac0d3r
Stavo pensando che un componente ascolti un evento, che il datapicker attivi un evento che il componente sta ascoltando, quindi non c'è bisogno di componenti figlio genitore. https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events –