【发布时间】:2017-07-31 10:25:40
【问题描述】:
我有一个 react 项目,一个配方框,其中包括打开配方和添加/删除成分的能力。这里是a fiddle。您可以单击配方名称打开配方。有一个编辑按钮,显示删除按钮并提供更改成分名称的选项。当按下“删除成分”按钮时,无论选择哪种成分,最后一个成分似乎总是被删除,但是当单击“完成”按钮并且可编辑的输入框变回文本时,会显示正确的更改,正确的成分被删除,最后的成分仍然存在。虽然这在功能上有效,但显然对 UI 不太友好,我想知道为什么会这样。任何帮助都会很棒。
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});
}
【问题讨论】:
-
你需要把你所有的数据收集到构造方法里面的状态对象中
-
所有数据都已经存储在状态
-
对不起,我没有看到 jsfiddle 链接
标签: javascript reactjs