У меня естьУдаление детей из массива внутри ScrollView всегда удаляет последний элемент
<ScrollView horizontal={true} >
{this.state.images.map((uri,i) =>
<Thumb key={i} number={i} uri={uri} onDelete ={this.deleteImage.bind(this)} />)}
</ScrollView>
Здесь каждый Thumb
класс имеет Image
. Всякий раз, когда я нажимаю на изображение, его необходимо удалить с ScrollView
.
Мой Thumb компонент выглядит следующим образом
class Thumb extends React.Component {
constructor(props){
super(props);
this.state = {
show : false
}
}
shouldComponentUpdate(nextProps, nextState) {
console.log(nextProps,'nextprops')
return false;
}
render() {
return (
<View style={[styles.button ]}>
<View style={[{position:'relative'},styles.img]} >
<View style={{position:'absolute'}}>
<Image style={styles.img} source={{uri:this.props.uri.path}}/>
</View>
<View style={[styles.img , {position:'absolute',alignItems:'center',justifyContent:'center',opacity:1}]}>
<TouchableHighlight onPress = {() => {this.props.onDelete(this.props))}}>
<Icon name="close" size = {30} color="white"/>
</TouchableHighlight>
</View>
</View>
</View>
);
}
}
и я пытаюсь удалить
deleteImage(deleteProp){
// console.log(_scrollView)
// _scrollView.props.children.splice(deleteProp.number,1)
// console.log(_scrollView)
console.log(deleteProp,'prop from delete method');
console.log(this.state.images ,'before')
let images = this.state.images;
console.log(images.splice(deleteProp.number ,1),'splice data');
this.setState({images : images});
console.log(this.state.images,'after')
if(this.state.images.length == 0){
this.setState({loading:false})
}
}
Как я этого добиться?
Я попытался удалить соответствующий объект состояния, но всегда удаляет последнее изображение ScrollView (или последнего компонента Thumb).
Я новичок в реагировании на родной язык и Android. Я не знаю, что это возможно с помощью ScrollView. Пожалуйста, предложите мне правильный метод.
Можете ли вы опубликовать код, чтобы удалить запись из state.images? Обычно вы хотите передать индекс/id элемента, который хотите удалить, например '' 'this.deleteImage.bind (this, i)' '', чтобы вы знали, какой из них удалить. –
@ fabio.sussetto Я передаю индекс, чтобы удалить изображение – santhosh
@ fabio.sussetto let images = this.state.images; images.splice (deleteProp.number, 1); this.setState ({images: images}); – santhosh