如何在React Native中使用ref更新属性值?

时间:2018-12-05 08:54:16

标签: react-native react-ref

在下面的代码中有一个“ 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);
}

任何人都可以解释如何创建索引引用以及如何使用它吗?

1 个答案:

答案 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