因此,我有一個帶有複選框的項目列表,就像經典的待辦事項應用程序一樣。React複選框即使在卸載組件後也會檢查
當我選擇「約翰尼」,然後單擊「刪除選定的記錄,」約翰尼不會消失。好極了!
但是,一旦約翰尼走了蕾妮被選中,現在。
我沒點擊蕾妮。我只點擊約翰尼,但一旦約翰尼被刪除,蕾妮就被檢查了。跆拳道?
很明顯,在複選框DOM保持真正的檢查狀態時發生了一些事情,即使我剛剛刪除了複選框。
我試圖通過更新componentWillUnmount中的狀態來解決這個問題,但那並不奏效。
import React, {Component} from 'react';
class Person extends Component {
constructor(props) {
super(props);
this.state = {
checked: false
}
this.checkboxToggle = this.checkboxToggle.bind(this);
}
checkboxToggle() {
this.setState({ checked: !this.state.checked },() => {
if (this.state.checked === false) {
console.log("Checked should be FALSE");
}
else if (this.state.checked === true) {
console.log("Checked should be TRUE");
this.props.setForDelete(this.props.person._id);
}
});
}
componentWillUnmount() {
this.setState({ checked: false });
}
render() {
return (
<div>
<input type="checkbox" name="person" checked={this.state.checked} onChange={this.checkboxToggle} />
{this.props.person.name} ({this.props.person.age})
</div>
);
}
}
export default Person;
Person組件中的其他部分工作正常。我刪除了任何記錄後,如何取消所有複選框的選擇?
更新:這裏是PeopleList,它是持有所有人員的組件。
import React, { Component } from 'react';
import Person from './Person';
class PeopleList extends Component {
constructor(props) {
super(props);
}
componentWillUnmount() {
this.props.resetSetForDeleteArr();
}
render() {
return(
<div>
{this.props.people.map((person, i) => {
return <Person key={i} person={person} setForDelete={this.props.setForDelete} />;
})}
<div onClick={() => this.props.deleteRecords()}>Delete Selected Records</div>
<div onClick={() => this.props.resetSetForDeleteArr()}>Empty Array.</div>
</div>
);
}
} // end class
export default PeopleList;
你能告訴其中personlist被渲染組件的代碼? – Chris
@Chris剛剛更新。 –