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

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

react-router-dom NavLink圖標更新程序“超出了最大更新深度。”

react-router-dom NavLink圖標更新程序“超出了最大更新深度。”

料青山看我應如是 2021-05-12 14:13:03
我們正在使用React.js進行項目。我正在使用react-router-dom配置多個頁面,并且我想使用NavLink更改當前活動的圖標。icon + sel用于活動頁面。我已經根據先前問題的答案重寫了代碼。SetState也退出了渲染,我稍微觸摸了其他設置。import React from 'react';import { Link, NavLink, Router } from 'react-router-dom';import ReactDOM from 'react-dom';import home from './home.svg';import homesel from './homesel.svg';import search from './search.svg';import searchsel from './searchsel.svg';import setting from './setting.svg';import settingsel from './settingsel.svg';import add from './add.svg';import addsel from './addsel.svg';import account from './account.svg';import accountsel from './accountsel.svg';import './Bottom.css';class Bottom extends React.Component {  state = {    iconName : 'initialIconName'  }  setIconName = (name) => {    this.setState(() => ({      iconName: name    }))  }  oddEvent = (match, location) => {  if (!match) return false  console.log(location.pathname.substr(1).split('/')[0])  this.setState(() => ({    iconName: location.pathname.substr(1).split('/')[0]  }))  }    render() {      return (          <fragment>            <div className="bottom noright">              <div className="bottomcontents">                <div className="bottomicon">                    <NavLink className="bottomiconinside bottomiconinsideside" src={home} exact to="/" isActive={this.oddEvent}>                    <img className="iconcenter" src={require(`./home${this.state.iconName == 'home' ? 'sel' : ''}.svg`)}/>                    </NavLink>                    <NavLink className="bottomiconinside bottomiconinsideside" exact to="/search" isActive={this.oddEvent}>                    <img className="iconcenter" src={require(`./search${this.state.iconName == 'search' ? 'sel' : ''}.svg`)}/>    }  }
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

您正在從oddEvent內部調用setState()(屏幕截圖顯示了它)。您不能通過render()來執行此操作,這會導致重新渲染,然后調用oddEvent,后者會調用setState(),后者導致重新渲染,并且不停地進行。

您將不得不重新考慮您的設計。



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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