【发布时间】:2018-04-19 08:43:08
【问题描述】:
我正在使用箭头函数在 React 组件中绑定 this。请参阅下面的handleChange() 函数。当我在箭头函数内部放置断点时,我发现很奇怪:this 被定义了,但是this.props 是undefined。尽管如此,this.props.onChange() 还是被正确调用了!!!这种奇怪的行为有什么解释吗?
class MyComponent extends React.Component {
render() {
const { someProp } = this.props;
// <TextField> is an input component from Material UI library
return (
<TextField
onChange={this.handleChange}
/>
);
}
handleChange = event => {
const value = event.target.value;
this.props.onChange(value);
};
}
附:另一方面,render() 方法行为正常 - 定义了 this.props。
更新
这是 Babel 生成的转译代码:
_this.handleChange = function(event) {
var value = event.target.value;
_this.props.onChange(value);
}
【问题讨论】:
-
请说明如何调用
handleChange -
@FuzzyTree,我更新了代码以显示如何调用
handleChange。 -
你看过实际执行的代码(即转译的代码)吗?转译后的代码可能没有使用
this。 -
你用的是什么 babel 预设?
-
@nem035,这是我的 Babel 预设:“babel-preset-es2015”:“^6.24.1”、“babel-preset-react”:“^6.24.1”、“babel- preset-react-app": "^3.0.3", "babel-preset-stage-1": "^6.24.1"
标签: javascript reactjs ecmascript-6 arrow-functions