我想删除李每当用户点击删除按钮。所以我传递了索引,但它在我点击它之前被触发了,我想我传递值是错误的。
http://jsfiddle.net/axhpuepq
var App = React.createClass({
getInitialState(){
return {
items:[1,2,3],
isEdit: false
}
},
renderEditForm(){
return(
<div>
<input type="text" />
<button onClick={this.saveHandler}>save</button>
</div>
)
},
ItemCtrl(index){
return(
<div className="itemCtrlWrap">
<button onClick={this.editHandler}>Edit</button>
<button onClick={this.dltHandler(index)}>Delete</button>
</div>
)
},
editHandler(){
this.setState({isEdit:true})
},
saveHandler(){
this.setState({isEdit:false})
},
dltHandler(index){
console.log(index) //shall recieve index here upon click
},
renderItem(){
return(
this.state.items.map((item,i)=>
<li key={i}> {this.state.isEdit ? this.renderEditForm() : item} {this.ItemCtrl(i)}</li>)
)
},
render(){
return(
<ul>
{this.renderItem()}
</ul>
)
}
})
React.render(<App />, document.getElementById('container'));
当您像这样定义on点击
时,它在实例化时调用该函数。您需要使用bind
或定义一个匿名函数:
<button onClick={this.dltHandler.bind(this, index)}>Delete</button>
或
<button onClick={() => this.dltHandler(index)}>Delete</button>
这两个函数都将函数传递给onClick
处理程序,但它们在触发onClick
之前不会执行。请注意,这样做将导致在每次渲染调用时生成一个新函数。如果经常进行渲染,这在计算上可能会很昂贵。
如果性能成为一个问题,最好将按钮重构为一个单独的组件,该组件具有定义的dltHandler
功能。
您正在执行函数,而不仅仅是设置它,如下所示:
onClick={this.dltHandler(index)}
如果要传递一些参数,请绑定它们。比如:
onClick={this.dltHandler.bind(this, index)}
或使用箭头功能:
onClick={() => this.dltHandler(index)}
如果您注意到,我们正在设置一个函数,同时将其声明为onClark
。这个函数只是执行dlHandler
。
我将2个值传递给子组件: 要显示的对象列表 删除函数。 我使用.map()函数来显示我的对象列表(就像react教程页面中给出的示例),但是该组件中的按钮在呈现时激发函数(它不应该在呈现时激发)。我的代码如下所示: 我的问题是:为什么函数在render时触发,以及如何使它不触发?
本文向大家介绍三种Android单击事件onclick的实现方法,包括了三种Android单击事件onclick的实现方法的使用技巧和注意事项,需要的朋友参考一下 onclick事件的定义方法,分为三种,分别为在xml中进行指定方法;在Actitivy中new出一个OnClickListenner();实现OnClickListener接口三种方式。 代码分别如下: 1. xml指定onclick
问题内容: 我正在尝试在React JS中创建一个模式 我有一个外部div,它是整个身体,而我有一个内部div。如果要在内部div之外单击它,我想应用该函数以关闭模式。 我的代码如下: 当我单击带有图标的链接时,或者在内部div外部单击时,它都可以正常工作。 但是问题是,如果我在内部div中单击,它也会关闭。 我不想使用jQuery。 有什么建议吗? 更新 而在我的情况是一个接触的形式: 问题答案
react中一次点击事件触发useReducer的dispatch会添加两个重复的内容。 以下是回调函数: const handleCheck = (e, path, ifPublic, tbIndex, chooseTable) => { }; 以下是onclick事件: Checkbox的功能正常,div会有问题
我是个新手。如何只在React中单击按钮后才呈现组件? 我还想知道如何在点击按钮时刷新组件而不刷新整个页面。
问题内容: 我目前正在使用jQuery使div可点击,在这个div中我也有锚点。我遇到的问题是,当我单击某个锚点时,两个单击事件都已触发(对于div和锚点)。如何在单击锚点时防止div的onclick事件触发? 这是损坏的代码: JavaScript 的HTML 问题答案: 事件冒泡到DOM中已附加单击事件的最高点。因此,在您的示例中,即使div中没有其他可显式单击的元素,div的每个子元素也