방금 React Native를 배우기 시작했습니다. 목록의 마지막 요소를 삭제하고 그 후에 목록이 업데이트되는 버튼이있는 간단한 앱을 만들려고합니다. 여기서 문제는 버튼을 클릭하면 전체 목록이 삭제된다는 것입니다. 누군가 나를 도와 줄 수 있습니까?
감사!
//delete Item from the list
class ButtonDelete extends Component{
constructor(props){
super(props);
this.handleChange = this.handleChange.bind(this)
}
handleChange(){
this.props.deleteItem();
}
render(){
const data = this.props.data;
return(
<View>
<FlatList
data={data}
renderItem={({item}) => <Greetings name = {item.key} ></Greetings>}
/>
<Button
onPress={this.handleChange}
title="Delete"
color="#841584"
/>
</View>
);
}
}
export default class FlatListBasics extends Component {
constructor(props){
super(props);
this.state = {
data: [
{key: 'Devin'},
{key: 'Jackson'},
{key: 'James'},
{key: 'Joel'},
{key: 'John'},
{key: 'Jillian'},
{key: 'Jimmy'},
{key: 'Julie'},
]
}
this.deleteItem = this.deleteItem.bind(this);
}
deleteItem() {
this.setState(prevState => ({
data: prevState.data.pop()
}));
}
render() {
const data = this.state.data;
return (
<View>
<ButtonDelete data = {data}
deleteItem={this.deleteItem}/>
</View>
);
}
}
array.pop()
제거 된 요소없이 새 배열을 반환하지 않습니다. 원래 배열을 변경합니다.
내 생각에 가장 좋은 해결책은 slice
상태를 업데이트하는 데 사용할 수있는 마지막 요소없이 새 배열을 다시 가져 오기 위해 사용하는 것이므로 삭제 함수는 다음과 같이 보입니다.
deleteItem() {
const newArray = this.state.data.slice(0, -1)
this.setState({
data: newArray
});
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다