TypeError:无法读取未定义的属性(读取“toLocaleString”)

Posted

技术标签:

【中文标题】TypeError:无法读取未定义的属性(读取“toLocaleString”)【英文标题】:TypeError: Cannot read properties of undefined (reading 'toLocaleString') 【发布时间】:2021-11-27 19:22:53 【问题描述】:

我正在上 React JS 课程。我想使用 propstoLocaleString 方法来呈现日期和日期。但是应用程序只是崩溃了。这是我的代码

 function ExpenseDate(props) 
  const month = props.date.toLocaleString("en-US",  month: "long" );
  const day = props.date.toLocaleString("en-US",  day: "2-digit" );
  const year = props.date.getFullYear();

  return (
    <div>
      <div>month</div>
      <div>year</div>
      <div>day</div>
    </div>
  );


export default ExpenseDate;

当我导出并使用该组件并刷新服务器时。服务器显示: Undefined (reading 'toLocaleString')

请帮忙。我很着急!

【问题讨论】:

您是否检查过“日期”是否已定义? 【参考方案1】:

您需要验证字段是否有值。 如果您使用的是 babel,这将起作用:

 function ExpenseDate(props) 
  const month = props.date?.toLocaleString("en-US",  month: "long" );
  const day = props.date?.toLocaleString("en-US",  day: "2-digit" );
  const year = props.date?.getFullYear();

  return (
    <div>
      <div>month</div>
      <div>year</div>
      <div>day</div>
    </div>
  );

【讨论】:

兄弟。这行得通。但是“?”是什么?日期之后? Babel 是一个 javascript 编译器。当你使用它时,这个“?”转换为像 props 的 javascript 验证?道具:“道具无效”。当审讯在那里时,它以一种干净的方式进行验证。你应该阅读更多关于 babel babeljs.io/docs/en/index.html【参考方案2】:

好吧,我以为我疯了,我实际上是在完全相同的步骤上做同样的反应课程,我想弄清楚我做错了什么?我添加了?但现在日期不显示了。

好的,如果你继续前进,他会纠正问题,在 ExpenseItem.js 文件的返回中,你需要添加以下内容:

<ExpenseDate date=props.date />

【讨论】:

是的,我后来在课程中发现了。但是关于 Props 部分的解释有点混乱。你不这么认为吗?【参考方案3】:

我也遇到了同样的错误:TypeError: Cannot read properties of undefined (reading 'toLocaleString')

在我的代码中

      <div className="coin-data">
            <p className="coin-price">Rs.price</p>
             <p className="coin-volume">Rs.volume.toLocaleString()</p>
            pricechange<0 ? (
                <p className="coin-percent red">pricechange.toFixed(2)%</p>
            ):(
                <p className="coin-percent green">pricechange.toFixed(2)%</p>
            )
        
        <p className="coin-marketcap">
            Mkt Cap: Rs.marketcap.toLocaleString()
        </p>
        </div>

在我的例子中,使用? 来检查是否有值的字段

      <div className="coin-data">
            <p className="coin-price">Rs.price</p>
             <p className="coin-volume">Rs.volume?.toLocaleString()</p>
            pricechange<0 ? (
                <p className="coin-percent red">pricechange.toFixed(2)%</p>
            ):(
                <p className="coin-percent green">pricechange.toFixed(2)%</p>
            )
        
        <p className="coin-marketcap">
            Mkt Cap: Rs.marketcap?.toLocaleString()
        </p>
        </div>

【讨论】:

以上是关于TypeError:无法读取未定义的属性(读取“toLocaleString”)的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义的属性“getters”

(节点:47028)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“表情符号”

NextJS:TypeError:无法读取未定义的属性“json”

TypeError:无法使用 TSLint 和 TypeScript 读取未定义的属性“getFullWidth”

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

TypeError:无法读取未定义的属性(读取“名称”)