I've been trying hard to accomplish code segment below, by reading official ES6 docs and other blogs:
onHomeStoreChange = () => (newState) {
this.setState(newState);
}
I used this link.
but it seems like gulp doesn't do its job correctly, I get A semicolon is required after a class property error but even after putting one this is still undefined. Here is part of gulp file that uses transform.
appBundler
// transform ES6 and JSX to ES5 with babelify
.transform("babelify", {presets: ["es2015", "stage-0", "react"]})
//.transform(babelify.configure({stage: 0}))
.bundle()
.on('error',gutil.log)
.pipe(source('bundle.js'))
.pipe(gulp.dest(buildDestination));
I use react 0.14.5 and these are my dev dependencies.
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babel-preset-stage-0": "^6.3.13",
"babelify": "7.2.0",
"browserify": "^12.0.1",
"gulp": "^3.9.0",
"gulp-if": "^2.0.0",
"gulp-streamify": "^1.0.2",
"gulp-uglify": "^1.5.1",
"gulp-util": "^3.0.7",
"vinyl-source-stream": "^1.1.0"
I'm confused and any help would be much appreciated.
edit - adding react complete code
export default class App extends React.Component {
constructor(props) { //put componentWillMount code in constructor
super(props);
//this.bindMethods();
this.state = HomeStore.getState();
}
componentDidMount() {
HomeStore.listen(this.onHomeStoreChange);
}
componentWillUnmount() {
HomeStore.unListen(this.onHomeStoreChange);
}
onHomeStoreChange = (newState) => {
//I had syntax error here
this.setState(newState);
}
render() {
return (
<div>
components will go here
</div>
);
}
bindMethods() {
this.onHomeStoreChange = this.onHomeStoreChange.bind(this);
}
}
If I use bindMethods() it's working but not =>
onHomeStoreChange = (newState) => this.setState(newState);