React.js TypeError: 无法读取undefined的属性“productID”

React.js TypeError: 无法读取undefined的属性“productID”

React 是一个声明性、高效、灵活的JavaScript库,用于构建用户界面。然而,就像其他任何技术一样,React也有自己的问题。其中一个问题是在使用React组件时可能出现的 “TypeError: 无法读取undefined的属性‘productID’” 错误。

这里的“productID”是一个对象、变量或数组,它可以是任何东西。我下面给出了所有这些的示例。

当组件尝试访问在当前范围内不存在的对象或变量时,通常会出现此错误。有时,它存在于当前范围内,但定义不正确。

在本文中,我们将讨论React中此TypeError的原因和解决方案。

示例1:当对象或变量不存在时,将发生TypeError。

在此错误中,我们在返回块中使用了特定的变量,但我们在返回块之前忘记定义它。如下面的代码所示,“productID”在返回块中使用,但在返回块之前从未定义和初始化。

import React from 'react'; 
  
function App() { 
  
    return ( 
        <div className= "App"> 
            <h1>GeekForGeeks </h1> 
            <h2>  
                This example shows when the object  
                or variable is not defined. 
            </h2> 
            <h2> Variable: { productID } </h2> 
        </div> 
    ); 
} 
  
export default App;

输出:

React.js TypeError: 无法读取undefined的属性“productID”

要解决这个错误,我们只需要简单地定义变量 ‘productID’productID = “GFG”

解决方案:

import React from 'react'; 
  
function App() { 
  
    // Here the productID is defined and initialized 
    let productID = "GFG"; 
      
    return ( 
        <div className="App"> 
            <h1 style={{color:"green"}}> 
                GeeksforGeeks 
            </h1> 
            <h2> 
                This example shows when the object  
                or variable is defined 
            </h2> 
            <h2>then the error is not there.</h2> 
            <h2>Variable: {productID}</h2> 
        </div> 
    ); 
} 
  
export default App;

输出:

React.js TypeError: 无法读取undefined的属性“productID”

示例2:当你尝试在数组上使用.map时,会出现TypeError错误。

当你尝试在未定义的数组上使用.map时,会发生错误。如下所示的代码中,在返回块之前声明了product,但在访问它时,我们尝试将其作为数组访问,但我们从未将其初始化为数组。

import React from 'react'
  
function App() { 
    let products; 
    return ( 
        <div className="App"> 
            <h1>GeekForGeeks</h1> 
            <h2> 
                This example shows when we use map  
                on array that is not defined 
            </h2> 
            {products.map(product => ( 
                <h2 key={product.productID}> 
                    {product.productName} 
                </h2> 
            ))} 
        </div> 
    ); 
} 
  
export default App;

输出:

React.js TypeError: 无法读取undefined的属性“productID”

解决方案: 解决上述错误的方法是,您可以定义数组,或者您可以使用useState钩子。在定义数组时,使用useState([])而不是类似useState()的方式。

1. 在不使用React Hooks的情况下定义数组。

import React from 'react'
  
function App() { 
    let products = [ 
        { 
            productID: 1, 
            productName: "GFG"
        }, 
        { 
            productID: 2, 
            productName: "GeeksforGeeks"
        }, 
    ]; 
    return ( 
        <div className="App"> 
            <h1 style={{ color: "green" }}> 
                GeeksforGeeks 
            </h1> 
            <h2>Solution for Example 2.</h2> 
            {products.map(product => ( 
                <h2 key={product.productID}> 
                    {product.productName} 
                </h2> 
            ))} 
        </div> 
    ); 
} 
  
export default App;

输出:

React.js TypeError: 无法读取undefined的属性“productID”

2. 使用useState和useEffect钩子定义数组

import React, { useState, useEffect } from 'react'; 
  
function App() { 
    const [products, setProducts] = useState([]); 
    let productArray = true; 
  
    useEffect(() => { 
        let productID = 1; 
        let productName = "GFG"; 
        let product = { productID, productName }; 
        setProducts([...products, product]); 
    }, [productArray]) 
  
    return ( 
        <div className="App"> 
            <h1 style={{ color: "green" }}> 
                GeeksforGeeks 
            </h1> 
            <h2>Solution for Example 2.</h2> 
            {products.map(product => ( 
                <h2 key={product.productID}> 
                    {product.productName} 
                </h2> 
            ))} 
        </div> 
    ); 
} 
  
export default App;

输出:

React.js TypeError: 无法读取undefined的属性“productID”

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程