簡體   English   中英

如何在React中的組件之間移動

[英]How to move between components in React

import React, { Component } from 'react'
import Head from './Head'
import Popular from './Popular'
import Movie from './Movie'
import Search from './Search'

class Flix extends Component {

constructor() {
    super()

    this.state = {
        id : 0,
    }
}

fetchDetails = (id) => {
this.setState({id : id})
}

render() {

    var dialogue //this is an array which I pass to Head

    if (this.state.id === 0) {
        return (

            <div>
                <Head subHeading={dialogue} />
                <Search />
                <Popular fetchDetails={this.fetchDetails}/>
            </div>

        );
    } else {
        return (

            <div>
                <Head subHeading={dialogue} />
                <Search/>
                <Movie id={this.state.id} />
            </div>

        );
    }
}
}

export default Flix;

因此,發生的事情是,“流行”顯示了流行電影的列表,當用戶單擊電影時,它會返回該電影的“ id”,並將其傳遞給“電影”以顯示有關所單擊電影的更多信息。

整個系統都可以正常運行,並且onclick我可以獲得有關該電影的更多詳細信息,但是我實現該方法的方式是,在開始id = 0時,顯示流行的電影並且onclick id更改為一些數字,而不是根據顯示的電影詳細信息。

我為此使用了簡單的if語句。

我的問題是,沒有后退按鈕,該如何實現用戶在獲取詳細信息后想要返回流行電影的位置,直到他向下滾動流行電影列表的方式。 基本上就像一個后退按鈕。

此時,瀏覽器上的后退按鈕不起作用。

在顯示詳細信息時獲取窗口的偏移量,並通過類似以下方式將其保存到tate中:

this.setState ({
   scrollOffset: window.scrollTop
})

然后,按鈕(或鏈接或所需的任何組件)和onClick綁定一個簡單的函數來執行此操作:

handleButton = () => {
    this.setState({
        id: 0 
    });
    window.scrollTo(0, this.state.scrollOffset);
}

如果您希望能夠使用“后退”按鈕,則最好通過實現react路由器(特別是基於Web的react-router-dom)來為您服務。 這是當前版本的一個很好的教程: https : //medium.com/@pshrmn/a-simple-react-router-v4-tutorial-7f23ff27adf 然后,您可以根據瀏覽器路徑設置狀態。

填寫對URL的實際更改可能比立即想要的要雄心勃勃,但是它確實打開了其他可能性,例如永久鏈接各個結果,同時仍將您的應用程序保留為單頁應用程序。

暫無
暫無

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

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