我有一個反應項目,一個配方框,其中包括打開配方和添加/刪除配料的功能。這裏是a fiddle。您可以單擊食譜名稱打開食譜。有一個編輯按鈕顯示刪除按鈕,並提供選項來更改配料的名稱。當按下'刪除配料'按鈕時,不管選擇了哪種配料,最後一個配料總是被刪除,但是當'完成'按鈕被點擊並且可編輯的輸入框變回到文本時,顯示正確的改變,適當的成分被刪除,最後的成分仍然存在。雖然這在功能上起作用,但它顯然不是非常友好,我想知道爲什麼會發生這種情況。任何幫助都會很棒。React組件呈現不正確
class Input extends React.Component {
render() {
const array = this.props.update;
let booleanButton = null;
if (this.props.ingr) {
////////////////////////////
// here is the button's JSX
booleanButton = <button onClick=
{this.props.handleDeleteIngredient.bind(this, array)}>delete
ingredient</button>;
///////////////////////////
}
return (<div><form><input type="text" defaultValue={this.props.text}
onChange={this.props.onChange.bind(this, array)} /></form>{booleanButton}
</div>)
}
}
而且處理程序:
handleDeleteIngredient(data, e) {
var key = data[2];
var ingrs = this.state.ingrs;
ingrs.splice(key, 1);
this.setState({ingrs:ingrs});
}
你需要將所有數據收集到的構造方法 –
裏面的狀態對象中的所有數據都存儲在狀態已經 – asparism
很抱歉,我沒有看到的jsfiddle鏈接 –