我很难理解为什么create-react-app
无法编译,告诉我error 'updateWord' is not defined no-undef
. 我对使用 ES6 进行 React 相当陌生。通常我会写一个类似的组件,const App = React.createClass({ });
但我决定尝试一些语法糖。
我有父组件App
和一个子组件Input
:
class App extends Component {
constructor(props) {
super(props);
// all other code omitted...
}
handleInput(input) {
console.log(`handle: ${input}`);
updateWord(input);
// this also causes an error
// this.updateWord(input);
}
updateWord(input) {
console.log(`update ${input}`);
// why isn't this defined?
}
render() {
return (
<div className="App">
<Input onInput={this.handleInput} />
</div>
);
}
}
class Input extends Component {
handleInput(e) {
let input = e.target.value;
this.props.onInput(input);
}
render() {
return (
<form>
<input onChange={this.handleInput.bind(this)} />
</form>
);
}
}
我试过改成this.updateWord(input);
而不是updateWord(input)
但无济于事。我得到:
"App.js:55 Uncaught TypeError: this.updateWord is not a function"
通常,当我实现与我现在正在做的类似的模式(使用 ES5)时,我没有任何困难。例如:
const App = React.createClass({
getInitialState: function() {
// all other code omitted...
},
handleInput: function(input) {
console.log(`handle: ${input}`);
this.updateWord(input);
},
updateWord: function(input) {
console.log(`update ${input}`);
// In theory, this implementation would not cause any errors?
},
render: function() {
return (
<div className="App">
<Input onInput={this.handleInput} />
</div>
);
}
}