开发者问题收集

我收到此错误“TypeError:无法读取 null 的属性(读取‘长度’)”

2021-12-21
673
import React from 'react';
import {MinCont} from "./MinCont";

export const Contain = (props) => {
    let myStyle = {
        minHeight: "100vh",
        margin: "40px auto"
    }
    let empty = {
        color: "red",
    }
    return (
        <div className="container my-3" style={myStyle}>
            <h3 className="my-3">Contain Works!!!</h3>
            <h6 className="my-1" style={empty}>
            {props.contains.length === 0? "No Contain To Display":
            props.contains.map((contain) => {
                return (<MinCont contain={contain} key={contain.sno} onDelete={props.onDelete} />)
            })
            }
            </h6>
        </div>
    )
} 
3个回答

props 不包含名为 constains 的属性,或者 contains 本身为 null

您可以做一件事。 试试这个:

//Your code
{props.contains.length === 0? "No Contain To Display": props.contains.map((contain) => { return () }) } ) }

//Now instead of props.contains.length === 0 you can first check if it exists
{props.constains?"yourcode":"else do nothing"}
Soyokaze
2021-12-21

使用可选链 (?.) 进行条件渲染 props 不包含属性。

如下所示:

props?.contains?.length === 0
Reza Ghorbani
2021-12-21

您需要验证 contains 是否确实已设置。在您的情况下,其为 null,这会导致错误,因为 null.length 不存在

您可以这样做

props?.contains?.length // either returns the length or undefined
Vincent Menzel
2021-12-21