第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

React router 在只有 url 更改之后渲染組件一次

React router 在只有 url 更改之后渲染組件一次

哆啦的時光機 2022-12-29 15:18:37
我的頁面有一個導航欄和一個側邊欄。導航欄由主頁和博客組成博客將呈現(xiàn) BlogHome 組件,該組件將從 db 獲取鏈接,單擊任何鏈接將呈現(xiàn) BlogContent 組件。假設側邊欄列出了 Blog1、Blog2 和 Blog3。如果我單擊 Blog1,它會將 Blog1 的內容正確呈現(xiàn)到它的一側,但如果我再次單擊 Blog2,它只會更改 URL,而不是 Blog2 的內容。請看看我的代碼:導航欄.js      <Router>            <Container className="p-0" fluid={true}>                <Navbar className="border-bottom" bg="transparent" expand="lg">                    <Navbar.Brand>{global.config.appname}</Navbar.Brand>                    <Navbar.Toggle className="border-0" aria-controls="navbar-toggle" />                    <Navbar.Collapse id="navbar-toggle">                        <Nav className="ml-auto">                            <Link className="nav-link" to="/">Home</Link>                            <Link className="nav-link" to="/blogs/main">Blogs</Link>                            <Link className="nav-link" to="/contact">Contact</Link>                        </Nav>                    </Navbar.Collapse>                </Navbar>                </Container>                <Switch>                    <Route exact path="/" component={Home}></Route>                    <Route exact path="/blogs/main" component={BlogHome}></Route>                </Switch>            </Router>BlogHome.jsexport default class BlogHome extends Component {    constructor(props)    {        super(props);        this.state = { data: null,route:null };    }    componentDidMount = () => {        console.log("BlogHome");        BlogDataService.getAll().then(data => {            let data_temp = []            let cnt = 0;            for (let item of data.data) {                data_temp.push(                <MenuItem key={cnt++} icon={<FaBlog />}>                    <Link to={"/blogs/main/" + item.id}>{item.title}</Link>                </MenuItem>                );                            }            this.setState({ data: data_temp });        })    }
查看完整描述

1 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

您的 item_id 只設置了一次并且根本沒有改變。第一次加載組件時它會工作但是當你第二次加載時你傳遞了新的項目 ID 但是組件不知道這個變化因此無法做任何事情。


嘗試創(chuàng)建一個獲取數據的函數。在 componentDidmount 中調用相同的函數?,F(xiàn)在,當它獲得新道具時,就該檢查了。使用 componentDidUpdate。


componentDidUpdate(prevProps, prevState){ 

   if(prevProps.blogId != this.props.blogId){

        this.setState({

           item_id: this.props.blogId 

       }, () => { call the function to get the data } )

  }

}


查看完整回答
反對 回復 2022-12-29
  • 1 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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