1
我有複選框可以做類似的事情。與參數反應的重構函數
功能:
constructor(props) {
super(props);
this.state = {
Dog:false,
Cat:false,
Fish:true,
clickedAnimal:true
};
this.checkCat = this.checkCat.bind(this);
this.checkDog = this.checkDog.bind(this);
this.checkFish = this.checkFish.bind(this);
}
checkCat(){
this.setState({Cat: !this.state.Cat});
}
checkDog(){
this.setState({Dog: !this.state.Dog});
}
checkFish(){
this.setState({Fish: !this.state.Fish});
}
複選框:
{this.state.clickedAnimal ?
<div className="animal-filter">
<p><input type="checkbox" checked={this.state.Cat} onChange= {this.checkCat)} /> Cat </p>
<p><input type="checkbox" checked={this.state.Dog} onChange={this.checkDog} /> Dog</p>
<p><input type="checkbox" checked={this.state.Fish} onChange={this.checkFish} /> Fish</p>
</div> : null}
我想重構這個到1個功能與參數給它:checkAnimal(動物)
不過,我不斷收到錯誤,當我做這樣的事情:
<input type="checkbox" checked={this.state.Fish} onChange={this.checkAnimal(Animal)} /> Fish
有沒有辦法通過這樣的複選框標籤中的函數傳遞參數?
--edit
這是我不斷收到如果我添加一個參數來checkAnimal錯誤:現有的狀態轉變(如render
內)期間
無法更新。渲染方法應該是道具的純函數。
感謝您的建議!我的問題是實際的標籤根本不接受參數。所以我無法走到這一步。我不斷收到「無法更新現有狀態轉換」錯誤 – lost9123193
您能否在您的問題中發佈更多代碼?具體來說就是您的輸入所在的渲染方法。 – jaybee
我剛剛添加了編輯,我認爲問題可能是由於clickedAnimal?有條件我在html中。謝謝! – lost9123193