배열의 각 요소에 카운터를 구현하고이를 화면에 표시하려고합니다. 배열이있어서 각 요소에 대해 자동차 이름, 좋아요, 증가 버튼 및 감소 버튼을 표시하려고합니다. 좋아하는 것을 늘리거나 줄이려고 할 때, 모든 요소가 똑같이 증가하고 감소합니다. 좋아하는 사람을 서로 독립적으로 유지하고 동일한 좋아하는 사람을 공유하지 않으려면 어떻게해야합니까? 예를 들어, 내가 1 대의 자동차를 좋아할 때, 나는 그 중 하나가 likes
카운트를 증가시키기를 원합니다. 누군가이 문제를 도와 줄 수 있습니까? 이것은 현재 코드입니다 :React.js의 각 항목에 대한 카운터
import React, {Component} from 'react';
class Cars extends Component {
constructor(props) {
super(props);
this.state = {
likes: 0
};
this.incFav = this.incFav.bind(this);
this.decFav = this.decFav.bind(this);
}
incFav(e) {
this.setState({likes: this.state.likes + 1});
}
decFav(e) {
this.setState({likes: this.state.likes - 1});
}
render() {
//Passed this.props.cars from another component. It is an array of cars.
const { cars } = this.props;
return (
<div>
{cars.map((car, key) => {
<li key={car}>
{car}
{this.state.likes}
<button onClick={this.incFav}>+</button>
<button onClick={this.decFav}>-</button>
</li>
})}
</div>
);
}
}
export default Cars;
그런 의미가 있습니다. 나는 당신이'incFav()'와'decFav()'메소드에 대한 접근 방식에서 당신이'likes : this.state.likes + 1'과'likes : this.state.likes- 1 '이다. 콜백과 초기 접근법을 사용하는 데 차이가 있습니까? – prindod
만약 미래의 상태가 오래된 상태에 의존한다면 나는 이것을 습관으로 사용합니다.이 접근법은'prevState'가 최신이고 이전 상태를 얻지 못하도록 보장합니다 (어떤 시나리오에서는 이상한 상태 업데이트를 일으킬 수 있습니다) . 구체적인 경우에는 괜찮을 지 모르지만 새로운 상태가 가장 최신 상태에 달려있는 경우에는 상태를 업데이트하는 습관을 가지도록 권장합니다. – G4bri3l
https://facebook.github.io/react/docs/react-component.html#setstate – G4bri3l