나는 To-Do 응용 프로그램을 만들고 있습니다. 나는 어느 시점에 갇혀있다.
배열의 항목을 매핑하여 정렬되지 않은 목록에 표시하고 있습니다. 필터 함수를 사용하여 삭제 된 항목을 배열에서 제거하려고합니다.배열을 필터링하여 필터링
내 코드의 문제가 어딘가에 있는데, 이벤트 개체를 전달하지만 목록 항목 대신 단추를 가리키고 있다고 가정합니다.
어떻게 반응합니까? 내 코드는 아래에 첨부되어 있습니다.
또한 항목을 제출 한 후 입력 필드를 지우는 것이 좋습니다. 이 라인에서
import React, { Component } from 'react';
class ToDoList extends Component {
constructor(props) {
super(props);
this.state = {list: [], items: ''};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
this.handleRemove = this.handleRemove.bind(this);
}
handleChange(event) {
this.setState({items: event.target.value})
console.log(event.target.value);
}
handleSubmit(event) {
this.setState({ list: [...this.state.list, this.state.items]})
event.preventDefault();
}
handleRemove(event) {
const filteredArray = this.state.list.filter(item => item !== event.target.value)
this.setState({list: filteredArray});
console.log(event.target);
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<label>
<input
type="text"
value={this.state.value}
onChange={this.handleChange} />
</label>
<input
onClick={this.handleSubmit}
type="submit"
value="Submit" />
</form>
<ul>
{this.state.list.map((i, index) => (
<li key={index+1}>
{i}
<button
onClick={this.handleRemove}>
X
</button>
</li>
))}
</ul>
<p>Remaining: {this.state.list.length}</p>
</div>
);
}
}
export default ToDoList;
그래,하지만이 접근법의 단점은 성능 저하라는 것입니다. 소품 내부에서'bind'를 사용한다는 것은 React가 모든 단일 렌더링에서 새로운 브랜드 기능을 생성한다는 것을 의미합니다. –
분명히 사실이지만, 나는이 특정 사례에 대해 걱정할 가치가없는 매우 틈새적인 관심사라고 생각합니다. 하지만 그 문제를 해결하려면 개인적으로 eslint 반응 플러그인 (https : // github)에서 권장하는 접근 방식을 선호합니다.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md # 목록 항목 중 – Hamms
감사합니다! 필터링과 관련하여 질문이 하나 뿐이며 화살표 함수의 첫 번째 매개 변수는 무엇입니까? 나는 ** _ **을 의미하지만 null을 시도했지만 오류가 발생했습니다. –