我是React的新手,我仍然在學習它。我正在做一個個人項目。React js:我可以將數據從一個組件傳遞到另一個組件嗎?
讓我解釋一下我的問題:
我有一個名爲<NewReleases />
,我讓Ajax調用,今天採取一些DATAS的一些電影出來電影院組件。 (我拿標題,海報img,概述等等......)我把所有的數據都放在<NewReleases />
狀態,這樣狀態變成了一個包含每個電影對象的對象,並且每個對象都包含標題屬性,海報屬性等......然後我渲染組件,使其看起來像由電影海報,信息等製作的網格。這效果很好。
然後,我需要一個組件<Movie />
從<NewReleases />
的狀態獲取一些數據並將它們呈現在HTML上。我閱讀了其他人遇到過類似問題的問題,但由於他們有一個由父組件呈現的子組件,所以它有所不同。就這樣,人們建議通過國家作爲道具。我不能這樣做,因爲我的<Movie />
組件不是由<NewReleases />
呈現的。 <NewReleases />
進行ajax調用,並僅根據檢索到的數據呈現JSX網格。
在index.js
我已經設置了主網頁是這樣的:(你看不到<NewReleases />
這裏,因爲它是<Home />
組件,該組件還呈現頁眉和頁腳的內部渲染)
import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter, Switch, Route} from 'react-router-dom';
import {Home} from './home';
import {Movie} from './movie';
import './css/index.css';
class App extends React.Component {
render() {
return(
<BrowserRouter>
<Switch>
<Route path={'/movie/:movieTitle'} component={Movie} />
<Route path={'/'} component={Home} />
</Switch>
</BrowserRouter>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
因此,當我點擊由<NewReleases />
呈現的電影時,該應用將讓我繼續localhost:3000/movie/:movieTitle
其中:movieTitle是一種動態的說電影標題的方式(例如,如果我點擊星球大戰渲染的海報<NewReleases />
,我會繼續localhost:3000/movie/StarWars
)。在那個頁面上,我想展示關於那部電影的詳細信息。信息存儲在<NewReleases />
狀態,但我不能從<Movie />
(我想)訪問該狀態。
我希望你有我想達到的。我不知道這是否可能。我有一個想法:在<Movie />
上,我可以爲我想要的電影做另一個ajax調用,但我認爲它會變慢,而且我認爲這不會是React的一個很好的解決方案。
請注意,我沒有使用Redux,Flux等......只有React。我希望在理解React之前轉向其他技術。
。 (保持簡單) – taha
不,你不能。你將不得不使用一些骯髒的黑客。這就是爲什麼我討厭反應。 –