javascript - 编辑 div 内容未按预期工作 React
问题描述
反应代码
class LoginIdCard extends Component {
constructor(props) {
super(props);
this.state = {
website: "",
username: "",
password: "",
editMode: false,
};
}
handleEdit = (fieldName, val) => {
this.setState({
[fieldName]: val,
});
};
creatLoginCardItem() {
const { logins } = this.props;
const { editMode } = this.state;
return logins.map((logins) => {
return (
<div className="card">
<button onClick={() => this.handleEdit("editMode", true)}>
edit
</button>
<p>{logins.website}</p>
<p>{logins.username}</p>
<p>{logins.password}</p>
</div>
);
});
}
render() {
const { editMode } = this.state;
return <>{editMode ? <input /> : this.creatLoginCardItem()}</>;
}
}
export default LoginIdCard;
i.stack.imgur.com/CKXXb.png
代码片段将卡片组件呈现为: web-app rendering
我想要的是当我单击编辑按钮时,div 内容显示是可编辑的,使用表单输入。但是只要我点击编辑按钮,所有的卡片都会被一个表格替换。我想单独编辑每张卡片并将它们保存到存储
解决方案
你的逻辑并不完全正确。您必须分别为每张登录卡设置状态。这并不难。
您需要创建一个新组件 LoginCardItem ,其中包含您现在使用的所有状态逻辑。(例如:this.state.editMode,...)
将您当前的 LoginIdCard 更改为 LoginCardOverview 之类的内容。为了表明这是一个概述。
在 LoginCardOverview 中,您可以遍历这些登录。
返回 logins.map((login) => < LoginCardItem />)
这样每个 LoginCardItem 都会有它自己的状态。
之后更改输入值:您必须像这样更改输入的状态:
<input onChange={(e) => this.setState({name: e.target.value})} />
推荐阅读
- node.js - 部署时出现 CORS 错误,但在本地工作 - Cogntio/SAM
- github - 将文件移动到 GitHub 的文件夹中(在他们的网站上)
- python - 在 python 中关闭 OSK (tabtip)
- vb.net - 列出超过 1000 个对象键的问题 - AWS-S3 - VB .net
- python - 如何使用 while 循环对数组求和?[Python]
- python - 如何对具有与单个键名相关的多个值的字典列表进行排序并将其转换为浮点数
- r - 安装分离和装载包
- pyspark - Pyspark/Hive 中带条件的加权运行总计
- css - CSS 闪烁框
- php - Composer 安装和更新问题(需要 php ^7.0 -> 您的 php 版本 (8.0.3))