我是一名React Native初学者,我正在使用平面列表和自定义行。在每个定制行中,我都有像Text、TextInput和Button这样的元素。问题是,我需要按下这些按钮中的一个来启用并触发对TextInput的焦点。
我试着用,refs,来实现它,但是所有的东西都冻结了,所以我不知道该怎么做才对。
class EditProfileScreen extends React.Component {
constructor(props) {
super(props);
this._rowRefs = {}
}
_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内部的内容,但结果却是按钮冻结了,而且我在控制台中从未看到过这样的结果
发布于 2019-05-28 02:35:03
尝试给出每个引用的键(而不是索引)
ref={ref => { this._rowRefs['key1'] = ref}}
并像这样调用焦点操作:
this._rowRefs['key1'].focus()
发布于 2019-05-28 19:54:34
你可以在移除后尝试上面的代码吗?
console.log(this._rowRefs)
https://stackoverflow.com/questions/56330875
复制相似问题