重新呈现React中的子组件或更改子状态
Re-render child component in React or change child state
例如,我们有一个组件(这是一个子组件):
class Child extends React.Component {
constructor(props) {
super(props);
this.state = {show: props.show || false};
this.close = this.close.bind(this);
this.open = this.open.bind(this);
}
close() {
this.setState({show: false});
}
open() {
this.setState({show: true});
}
render() {
return (
<div>
<Button onClick={this.open}>Open</Button>
<Modal show={this.state.show} onHide={this.close}>
.........
<Button onClick={this.close}>Close</Button>
</Modal>
</div>
);
}
}
我们有父组件:
class Parents extends React.Component {
constructor(props) {
super(props);
this.state = {show: false};
this.open = this.open.bind(this);
}
open() {
this.setState({show: true});
}
render() {
return (
<div>
<Button onClick={this.open}>open</Button>
<Child show={this.state.show}/>
</div>
)
}
}
所以我只想能够从父母那里打开模态元素,然后能够从孩子那里改变相同的孩子状态。我尝试使用componentWillReceiveProps()
,也使用npm包:react-komposer
。但在这种情况下,这些都没有帮助。我也想过用新道具重新渲染子组件,但我不能从父组件重新渲染它。
知道我们如何处理儿童状态吗?
如果你想更改父组件中的模态状态,你应该在那里(在父组件上)处理它。在这种情况下,Child
可以是一个从父级调用函数的无状态组件。有理由不这样做吗?
例如:
<Button onClick={props.open}>Open</Button>
<Modal show={props.show} onHide={props.close}>
.........
<Button onClick={props.close}>Close</Button>
</Modal>
相关文章:
- 如何更改reactjs中外部/独立组件的状态或属性
- 从组件状态的数组中删除元素
- React js更改状态不会更新组件
- 如何在渲染函数中检查 react 中子组件的状态
- 复选框保持React JS中各组件的状态
- 设置两个反应组件之间状态的正确方式
- 如何在react中设置视频端组件的状态
- reactjs-redux,是否可以有一个由2个组件使用的状态
- 如何处理 React / Flux 组件中的状态转换
- 如何从一个组件访问另一个组件的状态
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- React ES6 导入无状态组件
- React Js 组件在状态更改后只渲染一次
- Reactjs:在修改对象之前,是否需要复制处于组件状态的对象
- 在 React/Redux 中管理同级组件之间的滚动状态
- 超时后在无状态组件中执行函数
- React无状态组件-如何组织内部函数
- 使用无状态组件创建注册表单
- React无状态组件中的Ajax调用
- React无状态组件不工作