亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在第一次點擊反應后表格不會呈現

在第一次點擊反應后表格不會呈現

慕村9548890 2021-09-30 15:13:27
當我點擊導航按鈕然后表格數據加載但在第二次點擊表格數據不加載但數據加載在反應 js 中的每次點擊componentdidMount() {}每次加載時,我都將代碼放入其中以加載它。我做了異步函數來加載表并設置標題。{this.state.numofbugs.map((data)=> {    return (        <li key={data}>            <Link to={'/applogs/' + data}                     className="waves-effect" className={this.props.location.pathname === '/applogs/' + data ? 'active': ''}>                <span className="font-size waves-effect" >{data}</span>            </Link>        </li>    )})} 在它呈現的文件中componentDidMount() {    if (this.props.location.pathname.includes('app_')) {        this.showTable(this.props.location.pathname.split('/')[2]);    }}async showTable(col_name) {    // empty data    this.state.logtable = []    let conf = { headers: { Authorization: 'Bearer ' + localStorage.getItem('session') }}    Axios.get(links.baseURL + 'sample?collection=' + col_name, conf).then((response) => {        // get headers        this.state.tableHeaders = [            Object.keys(response.data.result[0])[0],             Object.keys(response.data.result[0])[1],            Object.keys(response.data.result[0])[2],            Object.keys(response.data.result[0])[3],        ]        Object.keys(response.data.result).map((key) => {            this.state.logtable[key] = response.data.result[key];            this.state.logtable[key]['key'] = key.toString()        });         this.setState({'logtable': this.state.logtable});    });}我希望在每次單擊表中的按鈕時都能在我的表中獲取數據,但是在一次單擊表中折疊數據的選項卡后,第二次數據加載到標簽而不是表中
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

首先,你不需要像這樣清空你的狀態,


this.state.logtable = []

如果你想用新的狀態替換現有的狀態,你可以簡單地用新數據設置狀態。


另一個問題是,你直接改變你的 state,像這樣


this.state.tableHeaders = [

    Object.keys(response.data.result[0])[0], 

    Object.keys(response.data.result[0])[1],

    Object.keys(response.data.result[0])[2],

    Object.keys(response.data.result[0])[3],

]

和這個


Object.keys(response.data.result).map((key) => {

    this.state.logtable[key] = response.data.result[key];

    this.state.logtable[key]['key'] = key.toString()

}); 

您應該使用局部變量來創建臨時數組,然后需要將它們設置為您的狀態,例如,


async showTable(col_name) {


    let conf = { headers: { Authorization: 'Bearer ' + localStorage.getItem('session') }}

    Axios.get(links.baseURL + 'sample?collection=' + col_name, conf).then((response) => {

        // get headers

        let tableHeaders = Object.keys(response.data.result[0]).map((key,index) => index <=3 && key.toString())


        let logtable = Object.keys(response.data.result).map((key) => ({

            logtable[key] : response.data.result[key];

            logtable[key]['key'] : key.toString()

        })); 

        this.setState({logtable, tableHeaders});

    });

}


查看完整回答
反對 回復 2021-09-30
  • 1 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號