2
React Native를 처음 사용하고 ListView를 테스트하고 있습니다. selectable = {true}로 각 행을 Text로 렌더링하지만 임의 행의 텍스트를 선택할 수는 없습니다.React 네이티브 ListView : 렌더링 된 텍스트를 선택할 수 없습니다.
나는 이유를 알아낼 수 없으며 인터넷 검색에서 아무 것도주지 못했습니다.
ListView의 각 행에서 텍스트를 선택할 수 있도록 어떻게해야합니까?
내 테스트 코드 :import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
ListView,
ScrollView,
TouchableHighlight,
} from 'react-native';
class Item extends Component {
onPress =() => {
console.log(`Item: component pressed: ${this.props.itemObj.name} `);
};
render() {
{/*<TouchableHighlight onPress={this.onPress} underlayColor='greenyellow'>*/}
return (
<TouchableHighlight>
<Text style={styles.item} selectable={true}>
{this.props.itemObj.name}
</Text>
</TouchableHighlight>
);
}
}
export default class ListViewTest extends Component {
constructor(props) {
super(props);
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 != r2 });
this.state = {
dataSource: ds.cloneWithRows([]),
};
}
componentWillMount() {
console.log("componentWillMount");
let items = [];
for (let i=0; i<30; i++) {
items.push({name: "item" + i});
}
this.setState({dataSource: this.state.dataSource.cloneWithRows(items)});
}
renderRow = (itemObj) => {
// console.log("renderRow(): ");
// console.log(row);
return <Item itemObj={itemObj} />;
{/*return <Text style={styles.item} selectable={true}>test message</Text>*/}
};
render() {
console.log("render");
return (
<ScrollView>
<ListView
style={styles.list}
dataSource={this.state.dataSource}
initialListSize={1}
renderRow={this.renderRow}
enableEmptySections={true}
/>
</ScrollView>
);
// return (
// <ScrollView>
// <Item itemObj={{name: "item1"}} />
// </ScrollView>
//);
}
}
const styles = StyleSheet.create({
list: {
flex: 1,
},
item: {
padding: 5,
borderBottomColor : 'blue',
borderStyle: 'solid',
borderBottomWidth : 1,
},
});
AppRegistry.registerComponent('ListViewTest',() => ListViewTest);
안녕하세요, 고맙지 만 작동하지 않았습니다. 렌더링 할 수 없습니다. 제 생각에 여기에있는 items는 다시 하나의 배열 인 1 요소의 배열이며, 렌더링을위한 특별한 처리가 필요합니다. – ZH17