I receive this error when I fetched the data for my chart (react-chartjs-2). I implement try/catch block and don't know how to remove this error. On Edge browser I get CRIPT28: SCRIPT28: Out of stack space
Uncaught (in promise) RangeError: Maximum call stack size exceeded
at trackProperties (trackForMutations.js:16)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
at trackProperties (trackForMutations.js:32)
Promise.catch (async)
(anonymous) @ ordersActions.js:44
(anonymous) @ index.js:9
(anonymous) @ index.js:43
(anonymous) @ index.js:55
(anonymous) @ bindActionCreators.js:5
loadDataForChart @ OrdersChart.js:96
boundFunc @ ReactErrorUtils.js:63
ReactErrorUtils.invokeGuardedCallback @ ReactErrorUtils.js:69
executeDispatch @ EventPluginUtils.js:83
executeDispatchesInOrder @ EventPluginUtils.js:106
executeDispatchesAndRelease @ EventPluginHub.js:41
executeDispatchesAndReleaseTopLevel @ EventPluginHub.js:52
forEachAccumulated @ forEachAccumulated.js:22
processEventQueue @ EventPluginHub.js:252
runEventQueueInBatch @ ReactEventEmitterMixin.js:15
handleTopLevel @ ReactEventEmitterMixin.js:25
handleTopLevelImpl @ ReactEventListener.js:70
perform @ Transaction.js:141
batchedUpdates @ ReactDefaultBatchingStrategy.js:60
batchedUpdates @ ReactUpdates.js:95
dispatchEvent @ ReactEventListener.js:145
Here's action I invoke in my component.
export function getDataForChart(dtStart, dtEnd) {
return function (dispatch) {
let actionUrl = new Localization().getURL(baseUrl, 'GetDataForChart');
dispatch({ type: types.CHARTSUMMARY });
return axios.post(actionUrl, { dateStart: dtStart, dateEnd: dtEnd }, {
headers: {
'RequestVerificationToken': antiForgeryToken.value,
'X-Requested-With': 'XMLHttpRequest'
}
}).then((response) => {
dispatch({ type: types.CHARTSUMMARY_LOADED, payload: response.data })
}).catch((error) => {
dispatch({ type: types.CHARTSUMMARY_REJECTED, payload: error })
})
}
}
Here's my component which is connected to redux store. It;seems to me that everythings fine.
export class OrdersChart extends Component {
constructor(props) {
super(props)
this.state = {
eStart: moment(),
eEnd: moment(),
chartData: {},
chartLoaded: false,
chartStart: false
}
this.loadDataForChart = this.loadDataForChart.bind(this);
}
componentWillReceiveProps(nextProps) {
const { chartData, chartLoaded, chartStart } = nextProps;
if(this.state.chartData != chartData) {
this.setState({ chartData, chartLoaded, chartStart })
}
}
loadDataForChart() {
this.props.actions.getDataForChart(this.state.eStart, this.state.eEnd);
}
render() {
return (
<div>
/* Date pickers ...*/
<BtnReload onClick={this.loadDataForChart}></BtnReload>
<Line data={this.state.chartData} options={{ tooltips: { mode: 'x' } }} />
</div>
)
}
}
function mapStateToProps(state) {
return {
chartData: state.chart.ChartData,
chartLoaded: state.chart.chartLoaded,
chartStart: state.chart.fetching
}
}
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(Object.assign({}, ordersActions), dispatch)
}
}
export default connect(mapStateToProps, mapDispatchToProps)(OrdersChart)
It's a little late but it's likely due to circular references in your state. Check this issue out: https://github.com/leoasis/redux-immutable-state-invariant/issues/15
According to the package's author (in a conversation from the link above):
What's the shape of your state? It looks like there may be circular dependencies in your state, which is causing problems with the way we traverse it to track mutations.
In order to fix this error, you can either remove the circular references in your state or configure the invariant middleware to ignore that branch of your state as follows, using object path syntax:
invariant({ ignore: ['path.to.ignore'] })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With