【问题标题】:Why is a stored object not displayed?为什么不显示存储的对象?
【发布时间】:2021-12-04 08:52:00
【问题描述】:

我将在 bmi 计算项目中输入的值作为对象保存在 localStorage^ 中。我在尝试查看它时遇到了问题。我有一个错误,即“无法读取 null 的属性(读取 'DaTe')”。我能做什么?

这是我声明的值:

function storeData() {
        var today = new Date();  
        var date = (today.getMonth()+1)+'-'+today.getDate()+'-'+today.getFullYear();
        let formData = JSON.parse(localStorage.getItem('formData')) || [];
        formData.push({
            DaTe : date,
            resultBmi: bmiResult,
            Name: values.name,
        });
        localStorage.setItem('formData', JSON.stringify(formData));
    }
    useEffect(()=>{
        storeData();
    },[bmiResult]) 

Calculations.js: 
function Calculations() { 
    return (
        <div className="calc-page" >
            <h2>CALCULATIONS</h2>
            <table id="records">
                <tbody>
                    <tr>
                    <th>Date</th>
                    <th>Name</th>
                    <th>BMI</th>
                    </tr>
                    {(localStorage.getItem("formData")) && JSON.parse(localStorage.getItem("formData")).map(data=>{
                    <tr>
                    <td>{data.DaTe}</td>
                    <td>{data.Name}</td>
                    <td>{data.resultBmi}</td>
                    </tr>
                    })}
                </tbody>
            </table>
            <button className="btn-clear">Clear</button>
        </div>
    );
} 

【问题讨论】:

  • 请按照minimal reproducible example 提供更多调试详细信息,包括确切存储的内容和当前发生的情况(包括错误状态)。如果没有更多细节,我们只能猜测各种可能的问题

标签: javascript reactjs components local-storage rendering


【解决方案1】:

您应该使用map() 方法来呈现数据,因为forEach 返回undefined 而map 返回一个新数组:

Working example

【讨论】:

    猜你喜欢
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多