Mam następujący reagować składnik, który pobiera dane Ajax od początkowego ładowania strony jak ta:Rerender React komponent z nowym parametrem AJAX kwerendy wartości
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')
);
Moim problemem jest to, że nie mogę rerender komponent gdy data jest zmienił się z datepika, zmieniając parametr daty Ajax i potrzebne jest inne żądanie z tymi nowymi wartościami.
Co próbowałem:
$(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')
);
})
})
Ale nic się nie dzieje. Jak mogę to rozwiązać? I czy można to zrobić tylko za pomocą JavaScript/jsx, bez potrzeby fluxowania i co najważniejsze bez node.js?
Ps. Używam FixedDataTable w tym przykładzie.
Nie możesz po prostu powiązać datepicker z komponentem za pomocą parametru zdarzenia, w ten sposób za każdym razem, gdy zdarzenie zostanie odebrane, stan aktualizacji składników, który Spowoduję ponowne renderowanie twojego komponentu. –
Niestety, nie sądzę, że to zadziała? O ile rozumiem, że działałoby to tylko wtedy, gdyby istniała relacja rodzic-dziecko? https://facebook.github.io/react/tips/communicate-between-components.html - ale w tym przypadku stworzyłem aplikację w MVC i gdy poznałem reakcję, użyłem jej coraz więcej dla różnych jednak selektory daty (od/do daty) i rozwijane menu wyboru (język) nie są elementami macierzystymi reagującymi - są po prostu znacznikami html. :/ – Dac0d3r
Myślałem, że komponent nasłuchuje na wydarzenie, popieram datepicker o zdarzenie, którego komponent nasłuchuje, więc nie ma potrzeby stosowania komponentów potomnych nadrzędnych. https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events –