javascript - 如何在本机反应中的数组过滤器响应值后禁用按钮
问题描述
在我的代码中。IdentificationType 是一个包含所有值的数组。现在我必须禁用以下按钮 CustomButton :条件如果强制:true 和 uploadStatus:false。
我尝试了一些代码,但它不起作用。基本上,如果条件为假,我必须禁用我的保存和继续按钮。在 IdentificationType 数组中我得到了价值。我必须循环并找到值 if (mandatory === true && value.uploadStatus === false) 然后按钮应该被禁用否则启用
const {IdentificationType}= this.state;
IdentificationType (3) [{…}, {…}, {…}]
0:
idType: "POID"
name: "Proof Identity"
description: "Upload your identity proof"
mandatory: true
eligibleDocumentList: (3) [{…}, {…}, {…}]
__typename: "IdentificationTypes"
doctype: (3) [{…}, {…}, {…}]
selectValue: "passport"
issueDate: "25/02/2020"
expDate: "25/02/2020"
idNumber: ""
place: ""
image: ""
uploadStatus: false
displayThumbnail: false
fileName: ""
__proto__: Object
1: {idType: "addressProof", name: "Address Proof", description: "Upload your address proof", mandatory: false, eligibleDocumentList: Array(3), …}
2: {idType: "ageProof", name: "Age Proof", description: "Upload your age proof", mandatory: false, eligibleDocumentList: Array(3), …}
length: 3
<View style={{ alignSelf: 'center', paddingTop: 20, position: 'absolute', bottom: 10, zIndex: 10 }}>
<CustomButton backgroundColor={parentStyle[appliedTheme] ? parentStyle[appliedTheme][appliedMode].primaryButtonColor : null}
width={deviceWidth - 30} label={'Save & Proceed'} height={60} labelFontSize={hp('2.5%')}
// disabled={this.isButtonDisabled()=== undefined?true:this.isButtonDisabled()}
disabled={this.state.IdentificationType.filter(value => {
value.mandatory === true && value.uploadStatus === false?true:false
})}
onPress={() => this.nextStep()}>
</CustomButton>
</View>
解决方案
this.state={
isButtonDisabled: true
isButtonDisabled() {
const { identityData } = this.props;
const mandatoryDocumentsUploaded = _.filter(identityData, function (value) {
return value['mandatory'] === true;
});
const mandatoryDocuments = _.filter(identityData, function (value) {
return ((value['mandatory'] === true)
&& (value['image'] !== '')
&& (value['uploadStatus'] === true)
&& (value['displayThumbnail'] === true));
});
if (mandatoryDocumentsUploaded.length === mandatoryDocuments.length) {
this.setState({
isButtonDisabled: false
})
} else {
this.setState({
isButtonDisabled: true
})
}
}
<CustomButton
disabled={isButtonDisabled} </CustomButton>
推荐阅读
- python-3.x - 关闭 GUI(Python、tkinter、pyinstaller)给出 - “无法执行脚本......”
- c - 我在 XV6 中杀死进程“A”,“A”的子进程会发生什么
- unity3d - 将统一制作的树导出到另一个项目
- r - 使用 for 循环进行数据清理
- java - 如何查找一个进程是否在 Windows/Linux 上运行
- flutter - 使用 OneSignal 时删除的用户出错
- machine-learning - 减少训练损失,稳定验证损失——模型是否过拟合?
- python - 如何测量崩溃的 Python 程序的时间?
- javascript - RxJS:使用更多/更少的 Observable 更新“combineLatest”以进行组合
- microservices - 事件溯源,两个服务在处理同一事件时发生冲突