【发布时间】:2020-04-27 01:13:07
【问题描述】:
有没有机会用这个渲染只编辑一个项目?
<ul>
{displayTasks.map(task => (
<li key={iiud()}>
<p contentEditable={edit}>{task}</p>
<button onClick={handleEdit}>{buttonText}</button>{' '}
<button onClick={handleDelete}>Delete</button>
</li>
))}
</ul>
我现在的编辑代码是这样的
const [edit, changeEdit] = useState(false);
const [buttonText, changeButtonText] = useState('Edit');
const handleEdit = e => {
e.preventDefault();
console.log(e.target);
let editItem = e.target.previousSibling;
console.log(editItem);
changeEdit(!edit);
buttonText === 'Edit' ? changeButtonText('Save') : changeButtonText('Edit');
};
当然,点击按钮后,每个项目都是可编辑的。
【问题讨论】:
-
您可以将 ID 保留在
edit中,而不是布尔值。如果edit没有 ID,则不会编辑任何内容。使用 if 语句有条件地允许编辑。 -
我尝试过,但仍然不知道如何仅在一项中将 contentEditable 更改为 true
-
我不会在反应中使用可编辑的内容。他们没有很好的地方
-
是的,我尝试在单击按钮后将文本更改为输入,但仍然存在相同的问题 - 单击一个按钮,将所有文本更改为输入
-
iiud()必须为每个任务输出相同的 ID
标签: javascript reactjs react-functional-component