react-native - React Native - 聚焦在 Flat List 元素内部的 TextInput(内部自定义组件)
问题描述
我是 React Native 初学者,我正在使用平面列表和自定义行。在每个自定义行中,我都有 Text、TextInput 和 Button 等元素。问题是我需要按下这些按钮之一来启用和触发对 TextInput 的关注。
我尝试用refs实现它,但一切都冻结了,所以我不知道如何正确地做到这一点。
- 我的构造函数
class EditProfileScreen extends React.Component {
constructor(props) {
super(props);
this._rowRefs = {}
}
- 我的 FlatList 和 MyCustomRow
_renderItem = ({item, index}) => {
return (
<MyCustomRow
fieldname={item.fieldname}
value={item.value}
isEditable={item.isEditable}
editFieldHandler={ this.editFieldHandler }
allowsEdition={item.allowsEdition}
ref={ref => { this._rowRefs[index] = ref}}
/>
)
}
_keyExtractor = (item, index) => index.toString();
render() {
return (
<View style={styles.mainContainer}>
<FlatList
ref={this.flatListRef}
style={styles.flatList}
data={this.state.fields}
renderItem={this._renderItem}
keyExtractor= {this._keyExtractor}
extraData={this.state.refresh}
/>
</View>
);
}
- 尝试打印参考:
enableField(name) {
console.log('Printing refs...')
console.log(this._rowRefs) // the Button pressed freezes here
}
我希望看到 _rowRefs 内部的内容,但不是那样,按钮只是被冻结,我从未在控制台中看到该结果
解决方案
尝试为每个参考(而不是索引)提供密钥
ref={ref => { this._rowRefs['key1'] = ref}}
并像这样调用焦点操作:
this._rowRefs['key1'].focus()
推荐阅读
- yii2 - 如何更改 yii2-usuario 注册模块以允许管理员注册用户
- rust - 为什么在可变函数的参数中不允许借用
- javascript - php表单提交时,提交按钮禁用
- php - 使用 php 和 Mysql 显示 0 的 NULL 值?
- filter - 如何从odoo 11中的many2many字段中获取过滤值列表?
- node.js - 在Node express中使用EJS从数组结果中删除尾随逗号?
- javascript - 为什么 FlatList 在 React Native 中没有动态更新
- powershell - Powershell根据前缀为文件名添加后缀
- java - Spring CGLib 代理 - 类变量变为空
- wordpress - 自定义 API 端点从类别中获取数据