martyjs / marty

A Javascript library for state management in React applications
http://martyjs.org
MIT License
1.09k stars 76 forks source link

React.createElement called on each store change #373

Closed tonypizzicato closed 9 years ago

tonypizzicato commented 9 years ago

is it ok that React.createElement is called on every change of my store, so i can not handle componentWillReceiveProps lifecycle event as it receives nextProps equal to prev element props as React.createElement is called every time?

In marty.createContainer

done: function done(results) {
    return React.createElement(InnerComponent, _extends({ ref: "innerComponent" }, this.props, results, { app: this.app }));
}

My container

export default Marty.createContainer(ChartComponent, {
    listenTo: 'ratesStore',

    fetch: {
        rates() {
            return this.app.ratesStore.getRates();
        }
    }
});

My component

class ChartComponent extends React.Component {
    componentWillReceiveProps(nextProps) {
        console.log("Diff: ", nextProps.rates.length - this.props.rates.length); // always 0
    }
    render() {
        return (
            <div>Rendering chart</div>
        )
    }
}

I need to handle changes of my this.props.rates after store changes. Maybe i missed something, but now i can not do this.