const [taxCodeDisable, setTaxCodeDisable] = useState(false);
const handleBatchSetup = (value) => {
productData.forEach(item=>{
if(item.taxRate!==value){
//如果值不相等,就禁用按钮
setTaxCodeDisable(false);
}else{
setCurTaxCode(value)
setTaxCodeDisable(true);
}
})
console.log("taxCodeDisable",taxCodeDisable)
};
//按钮如下
<Form.Item>
{getFieldDecorator('taxcodeSelect')(
<Select
style={{ width: '100px' }}
disabled={isEditOrDetail === 'detail' || taxCodeDisable}
value={productTaxCode}
optionLabelProp="value"
filterOption={false}
placeholder={intl.get('mallf.common.view.createorder.slectTaxCode').d('请选择税码')}
onFocus={() => {
taxFocus();
}}
// onChange={e => taxCodeChange(e, record, index)}
>
{taxCodeList &&
taxCodeList.map(item => {
return <Option key={item}>{item}</Option>;
})}
</Select>
)}
</Form.Item>
点击按钮“handleBatchSetup”,执行方法,直接给taxCodeDisable赋值,但是打印出来值还是false,why??可以怎么解决??想通过setTaxCodeDisable的变化决定taxCodeDisable来判断按钮是否置灰
你可能对react hook的理解有偏差,state在一个函数上下文中的值是不变的,setstate后,会重新初始化函数上下文,包括变量的重新声明(除了被useXXX包裹的内容),你上面的例子,想要看到效果,可以