如何使用 toFixed() 方法

How to use toFixed() method

想问一下toFixed()方法及其用法。我有一个名为卡路里的常量,它是一个数字数据,我想将它四舍五入为小数点后两位的数字。

const recipe = this.state.activeRecipe;
const calories = recipe.calories.toFixed(2);
console.log(calories);

我收到一条错误消息 Uncaught TypeError: Cannot read property 'toFixed' of undefined

任何人都知道如何解决这个问题,或者是否有任何我可以使用的方法?谢谢!

全部代码:

import React, { Component } from "react";

class Recipe extends Component {
    state = {
        activeRecipe: []
    }
    componentDidMount = async() => {
        const title = this.props.location.state.recipe;
        const req = await fetch
        (`https://api.edamam.com/search?q=${title}&app_id=${API_ID}&app_key=${API_KEY}`);

        const res = await req.json();
        this.setState({ activeRecipe: res.hits[0].recipe});
        console.log(this.state.activeRecipe);
        }
        render() {
            const recipe = this.state.activeRecipe;
            const calories = recipe.calories.toFixed(2);
            console.log(calories);
            return (
               <div className="container">
                       <h3 className="active-recipe">{recipe.label}</h3>
                       <div className="container">
                       {recipe.ingredients && recipe.ingredients.map(ingredient => {
                        return (
                            <p>{ingredient.text}</p>

                        );
                       })}
                       </div>
               </div>
            );
        }
}

export default Recipe;

这是一个很常见的问题。 render 第一次运行时,this.state.activeRecipe.calories 将为空,因为 fetch 调用尚未返回。因此,如果 this.state.activeRecipe.calories 存在,您需要通过仅调用 toFixed 来在 render 函数中说明这一点:

const recipe = this.state.activeRecipe;
const calories = recipe.calories ? recipe.calories.toFixed(2) : null;

请注意,在这种情况下,您还需要调整 render 函数返回的内容,即,如果 this.state.activeRecipe 为空,您需要知道该怎么做。