在下面的代码中有一个“ opened”属性,我想使用ref更改其值。在这里,我使用ref作为索引数组。
<Menu renderer={renderers.SlideInMenu} ref={(Menu) => { this.rowRefs[item.id] = Menu; }} opened={false}>
我尝试过
function updateRef(id){
React.findDOMNode(this.refs.id).setAttribute("opened", true);
}
任何人都可以解释如何创建索引引用以及如何使用它吗?
答案 0 :(得分:0)
道具应该是不可变的,出于动态 change 更新它们的目的,您应该考虑通过状态进行设置。
您的代码应如下所示:
<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进行初始化,并且在{ {1}},它将更改状态。
您的代码应如下所示:
Menu
然后您可以使用父级的class Menu extends React.Component {
constructor (props) {
super(props);
this.state = {
menuOpened: props.opened
}
}
changeMenuOpened = (value) => {
this.setState({
menuOpened: value
})
}
.....
}
的引用来调用changeMenuOpened
方法。
Menu