나는 React로 먼저 앱을 만들고 있습니다. 사용자가 태스크를 클릭하여 배열 및 UI에서 제거 할 수있는 삭제 기능을 생성하려고합니다.상태 배열에서 삭제하는 반응
저는 다른 튜토리얼에 이어 몇 가지 다른 시도를 해왔지만 행운은 없습니다. (주석 처리 된 섹션 확인) deleteItem 함수 내의 내 console.log가 정의되지 않은 것으로 표시되어 올바른 데이터를받지 못한다는 것을 알고 있습니다. 나는 이유에 관해서 길을 잃었다.
App.js :
import React, { Component } from 'react';
import { List } from './list';
export class Todo extends Component {
constructor(props) {
super(props);
this.state = {
term: '',
items: []
};
this.deleteItem = this.deleteItem.bind(this);
}
onChange = (e) => {
this.setState({term: e.target.value});
}
onSubmit = (e) => {
e.preventDefault()
if (this.state.term === "") {
alert("You must enter something!");
} else {
this.setState({
term: '',
items: [...this.state.items, this.state.term]
})
}
}
deleteItem(index){
// var filteredItems = this.state.items.filter(function (item) {
// return(item.index !== index);
// });
// console.log(filteredItems);
// this.setState({
// itmes: filteredItems
// })
this.setState({items: this.state.items.filter(function(item){
console.log(item.index)
return item !== item.index
})})
console.log(this.state.items)
// if (item.index === index) {
// var indArr = this.state.items.indexOf(item.index);
// this.state.items.splice(indArr, 1);
// }
}
render() {
return(
<div>
<h3>You currently have {this.state.items.length} things to do.</h3>
<form className="Todo" onSubmit={this.onSubmit}>
<input placeholder="Enter task" value={this.state.term} onChange={this.onChange} />
<button>add</button>
</form>
<List items={this.state.items} delete={this.deleteItem}/>
</div>
)
}
}
List.js
import React, { Component } from 'react';
export class List extends Component {
constructor(props) {
super(props);
this.delete = this.delete.bind(this);
}
delete(key) {
this.props.delete(key);
}
render() {
return(
<ul>
{
this.props.items.map((item, key) => <div class="listItems"
onClick={(e) => this.delete(item.key)}
key={key}>{item}</div>)
}
</ul>
)
}
}
어떤 도움을 깊이 감상 할 수있다.
deleteItem 함수에서 콘솔 출력을 확인하는 경우'keyword ' –
과 같이 다른 것으로'delete '를 업데이트 할 수 있습니까? 다시 입력하십시오. console.log (this.state. items)을 setState()에 대한 콜백으로 사용합니다. –
또한 항목 배열에 문자열을 추가합니다. 배열에서 문자열을 삭제하는 것이 어려울 수 있습니다. 배열에 json이 입력되어 있어야하고, 고유 키. –