Company logo
  • Jobs
  • Bootcamp
  • About Us
  • For professionals
    • Home
    • Jobs
    • Courses
    • Questions
    • Teachers
    • Bootcamp
  • For business
    • Home
    • Our process
    • Plans
    • Assessments
    • Payroll
    • Blog
    • Calculator

0

80
Views
Introducing the folowing to avoid undefined TypeError in react causes a weird bug

I am working in React and came across an undefined type error. So to do this, I did the following, which was introduce the || {} in the return statement. Basically it solves the issue in which it doesnt throw a type error anymore, however, there is now a bug in which it renders an empty state, even though there is data. I think the data just loaded slow. Is there any way

7 months ago · Juan Pablo Isaza
1 answers
Answer question

0

Your {} doesn't make sense where it is.

return amountByCurrency.find(acct => acct.id === currentAccountId || {}).assets;

The callback is:

acct => acct.id === currentAccountId || {}

So, with the first element of the array, either acct.id === currentAccountId is fulfilled, and the callback returns true, or it falls back to {}, and objects are truthy, so the callback returns - and the first element of the array is the resulting "found" item.

If no items exist in the array, an error will be thrown, because there's nothing to iterate over. The empty object in the callback doesn't do anything other than break the .find logic.

You should instead do something like

filterCurrencyBalances() {
    const { amountByCurrency, amountByAsset, currentAccountId } = this.props;
    if (currentAccountId) {
        const foundAcct = amountByCurrency.find(acct => acct.id === currentAccountId);
        return foundAcct ? foundAcct.assets : 0; // replace 0 with the desired default balance for no account
    }
    return amountByAsset;
}
7 months ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post job Plans Our process Sales
Legal
Terms and conditions Privacy policy
© 2023 PeakU Inc. All Rights Reserved.