我可以发送事件和参数到一个函数
Can I send event and a param to a function?
下面是我的代码:
export default class HeroDetail extends Component {
constructor(props) {
super(props);
}
updateHeroName(event) {
this.props.actions.changeName(this.props.heroAppState.selectedHero.id, event.target.value);
}
render() {
const _hero = this.props.heroAppState.selectedHero;
return (
<div>
<input placeholder="name"
value={_hero.name}
onChange={this.updateHeroName.bind(this)} />
</div>
);
}
}
我想在顶部绑定updateHeroName
。并通过2参数(hero_id和事件)进入updateHeroName
,但我不知道如何传递事件和一个名为_hero.id
的参数,所以代码不工作。我可以在javascript中做到这一点吗?
// Fail code
export default class HeroDetail extends Component {
constructor(props) {
super(props);
this.updateHeroName = this.updateHeroName.bind(this);
}
updateHeroName(hero_id, event) {
this.props.actions.changeName(hero_id, event.target.value);
}
render() {
const _hero = this.props.heroAppState.selectedHero;
return (
<div>
<input placeholder="name"
value={_hero.name}
onChange={this.updateHeroName(_hero.id, event)} />
</div>
);
}
}
应该可以:
export default class HeroDetail extends Component {
constructor(props) {
super(props);
this.updateHeroName = this.updateHeroName.bind(this);
}
updateHeroName(hero_id, event) {
this.props.actions.changeName(hero_id, event.target.value);
}
render() {
const _hero = this.props.heroAppState.selectedHero;
return (
<div>
<input placeholder="name"
value={_hero.name}
onChange={(event) => this.updateHeroName(_hero.id, event)} />
</div>
);
}
}
您可以像onChange={ (event) => this.updateHeroName(_hero.id, event) }
(Alexander T建议)那样做
但一般来说,最好不要在render
中使用箭头函数或bind
方法,因为它会在任何render
调用时生成函数的新副本。将函数声明移到class constructor
.
在这种情况下,我个人更喜欢使用箭头函数作为类属性
class MyClass extends React.Component {
handleClick = () => {
// your logic
};
render() {
return (
<button onClick={this.handleClick}>Click me</button>
);
}
}
这不是ES2015规范的一部分,但是babel stage-0预置支持此语法
你可以在这篇文章中了解更多React中的上下文绑定
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟