道具应该是不可变的,并且为了动态更改更新它们,您应该考虑通过状态设置它们。
您的代码应如下所示:
<Menu renderer={renderers.SlideInMenu} ref={component => this.menuRef = component }} opened={this.state.opened}>
在这种情况下,<Menu .. >
假定呈现在具有状态变量的组件中opened
,您可以使用this.setState({opened: true})
. 此状态更改将使您的 UI<Menu .. >
重新呈现,因此将使用opened={true}
.
另外,如果你想使用ref
,那么你应该考虑在Menu
其中创建一个状态变量,应该用opened
prop 初始化,并且你应该有一个方法Menu
来改变状态。
您的代码应如下所示:
class Menu extends React.Component {
constructor (props) {
super(props);
this.state = {
menuOpened: props.opened
}
}
changeMenuOpened = (value) => {
this.setState({
menuOpened: value
})
}
.....
}
然后您可以使用父级的 ref调用该changeMenuOpened
方法。Menu
this.menuRef.changeMenuOpened(true);