我有一个对象数组,并在输入中呈现其中的每个项目,在本节下,我有一个执行某些操作的按钮
我想检查每个输入项是否为空,不要调用按钮上按下的功能
我的代码不适用于第一个对象,
状态
toolsUsed: [
{
id: 0,
name: '..',
price: '..',
count: '..',
},
{
id: 1,
name: '..',
price: '..',
count: '..',
},
...
],
]
这是我的可迭代数组
renderToolsUsed = () => {
const {toolsUsed} = this.state;
return toolsUsed.map(({name, id, price, count}, i) => {
console.log('i', i);
if (
toolsUsed[i].name.length > 0 &&
toolsUsed[i].price.length > 0 &&
toolsUsed[i].count.length > 0
) {
this.setState({valid: true});
}
return(
<View>.....</View>
)
}
按钮功能
pressed = ()=>{
if(this.state.vaild){
call...
}else{
alert("please fill all fields");
}
}
您的操作方式,它仅设置第一项的状态,调用setState
触发重新渲染后,可能是您遇到了问题可能是Array.reduce
会帮助您
检查对象数组中除input
之外的所有id
是否等于''
的一种方法>
renderToolsUsed = () => {
return this.state.toolsUsed.map((item, index) => {
delete item.id;
if (Object.keys(item).every(key => item[key] !== '')) {
...
}
// If you want to use id later
if (Object.keys(item).every(key => key === 'id' ? true : item[key] !== '')) {
...
}
}