当前位置: 首页 > 面试题库 >

React Native:ListView中的引用

况谦
2023-03-14
问题内容

似乎很难直接访问视图中的引用。

现在,我有了一个带有单元格的列表视图。在renderRow函数中,我有类似以下内容:

renderRowView: function(rowData){
  return 
    <View >
        <TextInput
           ref="text"
        />
    </View>
},

在这种情况下,如果我想使用ref访问此TextInput,它将为undefined

我在Github上看到一个线程(https://github.com/facebook/react-
native/issues/897
)提到了解决此问题的方法,但我仍然不知道如何使用它:

render: function() {
  return (
    <ListView
      dataSource={this.state.dataSource}
      renderRow={(rowData, sec, i) =>
        <Text ref={(row) => this.rows[sec][i] = row}>{rowData}</Text>
       }
    />
  );
},

请帮助我了解此ref函数的工作方式以及使用方法(即以编程方式集中TextInput于该行中的内容)。谢谢!


问题答案:

refReact Component上的属性可以是a stringcallback函数,它将与组件的第一个参数一起调用。

因此,将函数传递给ref属性将在安装组件时执行它,并且组件本身在第一个参数中。

您粘贴的github代码正在执行的操作是在通过refcallback属性安装组件时将组件添加到二维数组中。该row说法在本质上是<TextInput/>本身。

您想实现什么?可能有一个更简单,更干净的解决方案。

编辑: 关于您要实现的目标,这将工作:

render: function() {

    return (
        <ListView
            dataSource={this.state.dataSource}
            renderRow={(rowData) => {
                var inputRefs = [];

                var _focusInput = function(name) {
                    inputRefs[name].focus();
                };

                var input1 =
                    <TextInput 
                        ref={(input) => {
                            inputRefs['input1'] = input;
                        }}
                        onSubmitEditing={_focusInput.bind(null, 'input2')}
                        onEndEditing={_focusInput.bind(null, 'input2')} />;


                var input2 =
                    <TextInput 
                        ref={(input) => {
                            inputRefs['input2'] = input;
                        }} />;

                return (
                    <View>
                        {input1}
                        {input2}
                    </View>
                );
            }}/>
    );
}

您可以在https://facebook.github.io/react-
native/docs/textinput.html#content处
深入研究TextInput事件。



 类似资料:
  • 问题内容: 我正在使用Commons CSV来解析与电视节目有关的CSV内容。其中一个节目的节目名称带有双引号; 2010年9月10日116,6,2,29,“” JJ“(60分钟)”,“ http://www.tvmaze.com/episodes/4855/criminal- minds-6x02-jj ” 节目名称为“ JJ”(60分钟),该名称已用双引号引起来。这在封装的令牌和定界符之间抛出

  • 我发现了这篇文章,其中讨论了是否应该建立文档之间的引用。我想注释我的类,以便在文档中创建引用: 这里,列表先决条件的对象具有对列表BS的对象的引用。在中可能吗?它是如何被称为的(我无法使用关键字“嵌入引用”和“文档内引用”找到任何信息。)Morphia的解决方案会是什么样子? 编辑:我知道引用注释,但它似乎引用了anoter集合,而不是同一个文档中的对象列表。我只想确保序列化的java对象被正确地

  • 我知道应该使用,但我想知道为什么这种方法不起作用。

  • 我在我的Wordpress网站上用引号有些麻烦,因为我使用了一个新的主题并添加了一些插件。 第一个问题:我想在我的页面标题中 (" ") 法语引号(我说的是超文本标记语言

  • 问题内容: 这些天来,我一直在使用Java反射和格式。我目前正在学习教学。 在JVM规范中,我发现了一个我不理解的术语: 符号引用 ,并且我有以下问题。 这是什么意思? 在哪里使用? 该指令在哪些情况下加载符号引用? Java中是否有与该操作对应的代码? 问题答案: 如果您引用给您带来麻烦的文档的确切内容,将很有帮助。既然您还没有,我将猜测一下ldc的文档中您可能引用的内容: 否则,如果运行时常量

  • 问题内容: 给定一个以复杂的,循环的方式相互引用的类实例的集合:垃圾收集器是否可能无法释放这些对象? 我隐约记得过去这是JVM中的问题,但我 认为 这在几年前已解决。但是,在jhat中进行的一些调查显示,循环引用是我现在面临的内存泄漏的原因。 注意:我一直给人以JVM能够解析循环引用并从内存中释放这种“垃圾岛”的印象。 但是,我提出这个问题只是为了看看是否有人发现了任何异常。 问题答案: 循环引用