在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網絡安全  HTML/ React組件能夠讀取到數(shù)據(jù),但是在頁面顯示的時候,總是顯示musicListD

React組件能夠讀取到數(shù)據(jù),但是在頁面顯示的時候,總是顯示musicListDetail.length為0 時的結果?

組件的代碼如下:

import React from 'react';

export default class SimpleListComponent extends React.Component{

    constructor(){
        super();
        this.state = {
            musicList: null,
            currentTitle:"",
            musicListDetail:[]
        }
    }

    componentWillMount(){
        var myFetchOptions = {
            method:"GET"
        }
        var list = null;
        console.log(this.props);
        fetch("http://localhost:3000/musicList?id=" + this.props.columnId, myFetchOptions)
        .then(response=>response.json())
        .then(json => {
            this.setState({musicList:json});

            this.state.musicList[0].details.map((item,index)=>{
                this.state.musicListDetail.push(item);
            });

            this.state.currentTitle = this.state.musicList[0].title;
        })
    }

    render(){
        const {musicListDetail}= this.state;
       
        const musicListContent = musicListDetail.length
        ?  
        this.state.musicListDetail.map((item,index)=>(
            <div key={index} className="m-list-item">
                <a>
                    <img src={item.src}/>
                </a>
                <div>{item.title}</div>
            </div>
        ))
        : 
        <h1 className="m-list-title">什么都沒有</h1>;

        return(
            <div className="m-simple-list-wrapper">
                <h1 className="m-list-title">{this.state.currentTitle}</h1>
                <div className="m-simple-list">
                    {musicListContent}
                </div>
            </div>
        )
    }
}

clipboard.png

查看的時候,右邊的地方顯示是獲取到了數(shù)據(jù)的,但是在左邊顯示不出來。

componentWillMount()不是在render()之前執(zhí)行的嗎?那應該state中的musicListDetail能取到值了呀?
后來了解到fetch()獲取數(shù)據(jù)的時候,頁面也是在渲染中的,但是換成componentDidMount()也還是不行。

回答
編輯回答
黑與白

好吧,最后把讀取數(shù)據(jù)部分寫成了一個方法,在componentDidMount()和componentWillMount()里面都調用了才可以,只單獨在其中一個里面調用都無法正常顯示

2017年10月20日 06:50