我想验证表下拉菜单中是否存在重复值
///////////////
///////////////
我想在setState中为表下拉列表重复值设置error属性,我尝试在内联函数中进行设置。但是我认为这种方式是不可能的。
</TableRow>
{
item.map(k => (
<TableRow >
<TableCell >
<select onChange={function(e){
item.forEach(k1 => {
if(k1.key===e.target.value)
{
this.setState({
err:'duplicate'
})
console.log(err)
}
else
{
k.key=e.target.value
this.setState({
err:''
})
}
})
}}>
</select>
</TableCell>
</TableRow>
如果我尝试在类中创建和绑定函数,则更改一个下拉菜单将更改所有下拉菜单 请建议我如何在内联函数中执行状态
答案 0 :(得分:0)
根本不需要您进行内联。我看到了您尝试内联执行此操作的动机,因为您需要从循环访问item
,但是您可以将该元素发送到函数而无需内联:
const onSelectchange = (e, k) => {
item.forEach(k1 => {
if(k1.key===e.target.value)
{
this.setState({
err:'duplicate'
})
console.log(err)
}
else
{
k.key=e.target.value
this.setState({
err:''
})
}
})
}
return(</TableRow>
{
item.map(k => (
<TableCell >
<select onChange={(e) => onSelectchange(e, k)}>
</select>
</TableCell>
</TableRow>)
您可以创建一个内联匿名函数,并将e
和item
传递给该函数,然后像执行内联一样执行它。
如果您担心具有内置匿名功能的“性能”,请不要担心。真是个神话。
确保您现在没有语法错误,因为代码不正确,无法简单地复制粘贴。