所以我在开头定义了这2个元素
let interestElm = (
<Row
title={translate('calculator.interest')}
value={translate('currency_amount', {
amount: offer.totalInterest,
})}
/>
);
let commisionElm = (
<Row
title={translate('calculator.commission')}
value={translate('currency_amount', {
amount: offer.newInitialCommission,
})}
/>
);
然后在渲染页面useEffect时运行此功能
useEffect(()=>{
discountElemHandler(discountData)
}, [discountData, amount])
此函数检查一些值,它们是否存在,应重新分配变量
const discountElemHandler = (discount) => {
if (discount.length) {
discount.forEach(discountItem => {
if (discountItem.type === 'Type1') {
interestElm = (
<Row
inheritStyle={style.discount}
title={translate('calculator.interest')}
discount={translate('currency_amount', {
amount: offer.newInterest + discountItem.amount,
})}
value={translate('currency_amount', {
amount: offer.totalInterest,
})}
/>
);
}
if (discountItem.type === 'Type2') {
commisionElm = (
<Row
inheritStyle={style.discount}
title={translate('calculator.commission')}
discount={translate('currency_amount', {
amount: offer.newInitialCommission + discountItem.amount,
})}
value={translate('currency_amount', {
amount: offer.newInitialCommission,
})}
/>
);
}
});
}
};
我可以在调试器上看到该功能满足条件,但是由于某种原因,重新分配没有发生?
有人可以帮助我吗? 谢谢你加载
答案 0 :(得分:1)
在渲染方法完成在屏幕上的绘制之后,将调用useEffect。这意味着,如果您希望触发新的渲染,请在useEffect运行之后触发STATE更改。 我建议您要么将两个let变量定义为STATE,要么在状态中存储其他类型的数据,这些数据将在这两个var中使用。