我是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
不,你不能。你将不得不使用一些肮脏的黑客。这就是为什么我讨厌反应。 –