【发布时间】:2018-12-23 05:09:43
【问题描述】:
我有一张这样的桌子:
当用户点击Edit 按钮时,<input> 应出现在其位置。
如果用户点击另一个Edit 按钮,这个按钮也将替换为<input>,并且之前的<input> 应该会消失并再次显示Edit 按钮。
简而言之,一次只能有一个字段处于编辑模式。
这是我最初的state:
state = {
editnameEnable: false,
editemailEnable: false,
editaddressEnable: false,
edittelephone_noEnable: false,
}
这是我的edit() 方法:
edit = value => {
var address_element = ['name','address','email','telephone_no'];
address_element = address_element.filter(element => element !== value);
address_element.map( val => this.setState({[`edit${val}Enable`]: false}));
this.setState({[`edit${value}Enable`]: true}, ()=>{
console.log(this.state);
});
}
这是我 render 方法中 JSX 的一部分:
<td>{
this.state[`edit${this.props.item}Enable`] ? ( <input type="text"/> ) : (
<span
className="edit"
onClick={ () => this.edit(this.props.item) }>Edit</span>
)
}</td>
问题是当我点击Edit 按钮时,<input> 出现,但是当我点击另一个Edit 按钮时,之前的<input> 并没有消失。
【问题讨论】:
标签: javascript reactjs html-table conditional-statements react-state-management