【问题标题】:Edit div content not working as intended React编辑 div 内容未按预期工作 React
【发布时间】:2021-04-22 01:13:24
【问题描述】:

反应代码

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

代码 sn-p 将卡片组件呈现为: web-app rendering

我想要的是当我单击编辑按钮时,div 内容显示为可编辑,使用表单输入。 但是只要我点击编辑按钮,所有的卡片都会被一个表格替换。 我想单独编辑每张卡片并将它们保存到存储中

【问题讨论】:

    标签: javascript html css node.js reactjs


    【解决方案1】:

    你的逻辑并不完全正确。您必须分别为每张登录卡设置状态。没那么难。

    1. 您需要创建一个新组件 LoginCardItem ,其中包含您现在使用的所有状态逻辑。 (例如:this.state.editMode, ...)

    2. 将您当前的 LoginIdCard 更改为 LoginCardOverview 之类的内容。为了表明这是一个概述。

    3. 在 LoginCardOverview 中,您可以循环访问这些登录信息。

    return logins.map((login) => )

    这样每个 LoginCardItem 都会有自己的状态。

    之后更改输入值:您必须像这样更改输入的状态:

    <input onChange={(e) => this.setState({name: e.target.value})} />
    

    【讨论】:

    • 好的。我做到了...从父组件(它将显示)我将状态作为道具传递给 loginCardItem。在父组件中,我映射要渲染的状态,以便每个 cardItem 都有自己的状态.....顺便感谢您的解决方案
    • 好的.. 我面临的另一个问题是,当我点击登录卡上的编辑时......输入出现了。输入字段的默认值我设置了最初显示的值。但是当我在上面输入一些东西时输入的默认值不会改变
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2014-09-21
    • 2017-03-01
    相关资源
    最近更新 更多