运行useEffect后未重新分配变量

时间:2020-05-21 10:44:52

标签: javascript react-native react-hooks

所以我在开头定义了这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,
              })}
            />
          );
        }
      });
    }
  };

我可以在调试器上看到该功能满足条件,但是由于某种原因,重新分配没有发生?

有人可以帮助我吗? 谢谢你加载

1 个答案:

答案 0 :(得分:1)

在渲染方法完成在屏幕上的绘制之后,将调用useEffect。这意味着,如果您希望触发新的渲染,请在useEffect运行之后触发STATE更改。 我建议您要么将两个let变量定义为STATE,要么在状态中存储其他类型的数据,这些数据将在这两个var中使用。