我是非常新的反应和javascript所以如果我问这个错误我很抱歉。 这是针对小组项目的,这意味着我很可能不了解项目100%
```
export default class OlderSibling extends Component {
state = {
currentCity: city //(that was gathered from a bunch of other steps)
};
render() {
return(
)
}
}
```
```
class Parent extends Component {
constructor(props) {
super(props)
this.state = {
flower: 'red'
}
}
render() {
return (
<OlderSibling/>
<YoungerSibling/>
)
}
}
```
```
export class YoungerSibling extends Component {
constructor(props) {
super(props);
this.state = {
title: '',
description: []
}
}
render() {
return(
)
}
}
```
为了防止我不清楚,年轻的兄弟姐妹只想要年长的兄弟姐妹。这个状态:当前城市老兄弟兄弟辛辛苦苦聚集。
我知道我没有完全放置代码,但如果你想批评它,请做!我还在学习,欢迎大家的反馈!
我想方设法做到这一点,但他们都是关于将父母转移给孩子而不是我想要的。我还读到有Redux可以处理这个?我不知道我的同学们是否对此感兴趣。
感谢您抽出宝贵时间阅读本文!
编辑:
[已解决]
我只想编辑并感谢@soupette,@ Liam,@ [Denys Kotsur]和@Tomasz帮助我理解更多的反应。我意识到这篇文章非常像一个勺子喂食请求,你们都帮助了。谢谢!
此外,如果有其他人遇到此问题,请不要忘记将其作为this.props.currentCity
在Younger Sibling上调用。
答案 0 :(得分:2)
您可以执行以下操作:
ViewContext
然后在您的OlderSibling中,您可以使用函数更新父状态:
class Parent extends Component {
state = {
flower: 'red'
currentCity: '',
};
updateCurrentCity = (currentCity) => this.setState({ currentCity });
render() {
return (
<OlderSibling updateCurrentCity={this.updateCurrentCity} />
<YoungerSibling city={this.state.currentCity} />
);
}
}
答案 1 :(得分:2)
您应该为这两个组件创建let inner = await GetProperty(ele, 'innerHTML');
组件并保持状态。
此外,您应该将其作为Parent
传递给两个孩子(YoungerSibling
和OlderSibling
)并为prop
添加反向数据流,以便在城市更改时OlderSibling
然后OlderSibling
应该知道这一点。
例如:
<强> Parent.jsx 强>
ParentSibling
<强> OlderSibling.jsx 强>
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {
currentCity: ''
}
}
currentCityChangeHandler = city => {
this.setState({currentCity: city});
};
render() {
const { currentCity } = this.state;
return(
...
<OlderSibling
currentCity={currentCity}
onCurrentCityChange={this.currentCityChangeHandler}
/>
<YoungerSibling currentCity={currentCity} />
...
)
}
}
因此,在这种情况下,它允许您在两种情况下都使用此参数,并且会不断更新。
此外,您应该在 class OlderSibling extends React.Component {
...
// Somewhere when new city is coming from
// You should pass it into the callback
newCityComingFunction() {
const city = 'New York';
// Pass the new value of city into common `Parent` component
this.props.onCurrentCityChange(city);
}
...
}
中使用this.props.currentCity
,而不是在此组件中使用OlderSibling
,因为它的值已移至this.state.currentCity
的组件状态。
希望它会有所帮助。
答案 2 :(得分:2)
答案 3 :(得分:1)
你有两个选择。
Parent
组件将在该状态中保留currentCity
。使用contex API可能有第三种选择,但我不确定如何在此处执行此操作。