簡體   English   中英

未捕獲到的TypeError:無法讀取ReactJs中{Component} .render上未定義的屬性“ map”

[英]Uncaught TypeError: Cannot read property 'map' of undefined at {Component}.render in ReactJs

我正在將數組傳遞給側邊欄組件的道具,我想在我的子組件中訪問它...

當我保存代碼並轉到瀏覽器時...我收到此錯誤消息 這是一條錯誤消息

import React, { Component } from 'react';
import PropTypes from 'prop-types';

import './styles.scss';

import Sidebar from './../../components/sidebar';
import Header from './../../components/header';

export default class Dashboard extends Component {

buildComponent = props => {
    console.log("Props", props.children);

    var items = [
        {
            "link": "facebook.com",
            "title": "Facebook"
        },
        {
            "link": "google.com",
            "title": "Google"
        }
    ]

    return (
        <div>
            <Header />
            <div className="container-fluid">
                <div className="row">
                    <Sidebar name={items} />
                    <div className="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
                        {props.children}
                    </div>
                </div>
            </div>
        </div>
    );
}

render() {
    return this.buildComponent(this.props);
}
}

Dashboard.propTypes = {
children: PropTypes.any
};

並希望在子組件中獲得道具數據。

import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import PropTypes from 'prop-types';




export default class Sidebar extends Component {
constructor() {
    super();

}


render() {
    return (
        <div className="row">
            <div className="col-sm-3 col-md-2 sidebar">
                <ul className="nav nav-sidebar">
                    <li><a href="#">Dashboard</a></li>
                    <li className="fa fa-plus"><Link to="/feed">For Your Approval</Link></li>
                    <li><Link to="/article">Active</Link></li>
                    <li><a href="">{this.props.items.map((title) => <li>{title}</li>)}</a></li>
                    <li><a href="#">Rejected</a></li>
                    <li><a href="#">Send For Approval</a></li>
                    <li><a href="#">Draft</a></li>
                    <li><a href="#">Archied</a></li>

                </ul>
                <ul className="nav nav-sidebar">
                    <li><a href="">Brand Safety</a></li>
                    <li><a href="">Report</a></li>
                </ul>
            </div>
        </div>
    );
}
}

我正在學習教程,但遇到此錯誤,我是Reactjs的新手,請幫忙....

您沒有將“ items”道具傳遞給補充工具欄。 您只是在傳遞名字。 您需要執行<Sidebar items={items}>

側邊欄組件中的props,您作為name傳遞。 因此,請執行以下操作:

this.props.name && this.props.name.map(...)

只有在名稱props未定義的情況下,map方法才有效。 並且有必要檢查它是否有價值。 因為在初始渲染時(即使渲染為null,也渲染),所以使用map可能會出錯。 因此,檢查它是一個好習慣。

console.log(this.props)添加到Sidebar的render方法中,以查看收到的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM