在构造函数中反应绑定,如何将参数传递给道具
React bind in constructor, how to pass parameters to props
我正在尝试将我的 React 类 转换为 ES6,但我在这个过程中遇到了一些困难。我想在构造函数中而不是在渲染视图中进行绑定。
现在,如果我有一个带有 setState 的根模块需要一个参数,例如:
constructor() {
super();
this.state = {
mood: ""
};
this.updateMood(value) = this.updateMood.bind(this,value);
}
updateMood(value) {
this.setState({mood: value});
}
然后我将这个函数传递给一个组件:
<customElement updateMood={this.updateMood}></customElement>
然后在 customElement 模块中,我有这样的东西:
constructor() {
super();
}
update(e) {
this.props.updateMood(e.target.value);
}
并在渲染中:
<input onChange={this.update} />
这是正确的方法吗?因为我无法让它工作 ;-(
你不能使用这个this.updateMood(value) = this.updateMood.bind(this,value);
结构,因为它是语法错误。
你可以这样解决你的问题
class CustomElement extends React.Component {
constructor() {
super();
this.update = this.update.bind(this);
}
update(e) {
this.props.updateMood(e.target.value);
}
render() {
return <input onChange={this.update} />
}
}
class Parent extends React.Component {
constructor() {
super();
this.state = {
mood: ""
};
this.updateMood = this.updateMood.bind(this);
}
updateMood(value) {
this.setState({ mood: value });
}
render() {
return <div>
<CustomElement updateMood={this.updateMood}></CustomElement>
<h1>{ this.state.mood }</h1>
</div>
}
}
或者,根据你的 babel 设置,或者当使用 typescript 时,以下实现相同但更方便编写/维护:
class Parent extends React.Component {
constructor() {
super();
this.state = {
mood: ""
};
}
updateMood = (value) => {
this.setState({ mood: value });
}
}
我正在尝试将我的 React 类 转换为 ES6,但我在这个过程中遇到了一些困难。我想在构造函数中而不是在渲染视图中进行绑定。
现在,如果我有一个带有 setState 的根模块需要一个参数,例如:
constructor() {
super();
this.state = {
mood: ""
};
this.updateMood(value) = this.updateMood.bind(this,value);
}
updateMood(value) {
this.setState({mood: value});
}
然后我将这个函数传递给一个组件:
<customElement updateMood={this.updateMood}></customElement>
然后在 customElement 模块中,我有这样的东西:
constructor() {
super();
}
update(e) {
this.props.updateMood(e.target.value);
}
并在渲染中:
<input onChange={this.update} />
这是正确的方法吗?因为我无法让它工作 ;-(
你不能使用这个this.updateMood(value) = this.updateMood.bind(this,value);
结构,因为它是语法错误。
你可以这样解决你的问题
class CustomElement extends React.Component {
constructor() {
super();
this.update = this.update.bind(this);
}
update(e) {
this.props.updateMood(e.target.value);
}
render() {
return <input onChange={this.update} />
}
}
class Parent extends React.Component {
constructor() {
super();
this.state = {
mood: ""
};
this.updateMood = this.updateMood.bind(this);
}
updateMood(value) {
this.setState({ mood: value });
}
render() {
return <div>
<CustomElement updateMood={this.updateMood}></CustomElement>
<h1>{ this.state.mood }</h1>
</div>
}
}
或者,根据你的 babel 设置,或者当使用 typescript 时,以下实现相同但更方便编写/维护:
class Parent extends React.Component {
constructor() {
super();
this.state = {
mood: ""
};
}
updateMood = (value) => {
this.setState({ mood: value });
}
}