【问题标题】:Todo list Reverse state to false on click onclick待办事项列表单击单击时将状态反转为false
【发布时间】:2021-12-05 17:41:21
【问题描述】:

当用户单击取消按钮时,我试图将状态反转为真或假。

完整项目可通过以下链接在沙盒上获得。我是新来的反应发展和与状态斗争。有人可以帮忙吗?

要了解我的意思,请输入一些内容并单击添加

https://codesandbox.io/s/eloquent-feather-gc88n?file=/src/header/header.js

感谢里奥

【问题讨论】:

    标签: reactjs boolean state use-state


    【解决方案1】:

    将您的 handleCancelClick 函数更新为:

    handleCancelClick = (e) => {
        setIsEditing((prevState) => !prevState)
        console.log('Cancel edit', isEditing)
    }
    

    您可能还需要一些修改:

    在 Skillist.js 中:

    <EditSkillsForm
      inputs={inputs}
      isEditing={isEditing}
      setIsEditing={setISEditing}
      onCancelClick={handleCancelClick}
      onUpdateInput={handleUpdateInput}
      onCurrentInput={currentInput}
    />
    

    在 editSkillsForm.js 中,我们还获得了 isEditingsetIsEditing 属性:

    const EditSkillsForm = ({
      handleUpdateInput,
      inputs,
      handleCancelClick,
      setCurrentSkill,
      isEditing,
      setIsEditing
    }) => {
    

    完整文件代码(以防万一): editSkillsForm.js:

    import React, { useState } from "react";
    
    const EditSkillsForm = ({
      handleUpdateInput,
      inputs,
      handleCancelClick,
      setCurrentSkill,
      isEditing,
      setIsEditing
    }) => {
      //const [ currentSkill, setCurrentSkill ] = useState({});
      // const [isEditing, setIsEditing] = useState(true);
      // const [ onSubmitEditing, SetOnSubmitEditing ] = useState("")
    
      function handleEditInputChange(e) {
        setCurrentSkill(e.target.value);
      }
    
      handleCancelClick = (e) => {
        setIsEditing(false);
        console.log("Cancel edit", isEditing);
      };
    
      return (
        <>
          {isEditing ? (
            <div>
              <h4>Edit Skill</h4>
              <input
                className="mb-2"
                size="lg"
                onChange={handleEditInputChange}
                type="text"
                name="Update skill"
                placeholder="Update skill"
                value={inputs}
              />
              <button className="btn btn-primary mx-2" onClick={handleUpdateInput}>
                Update
              </button>
              <button onClick={() => handleCancelClick()}>Cancel</button>
            </div>
          ) : null}
          {/* <div>
          <h4>Edit Skill</h4>
          <input
          className="mb-2"
          size="lg"
          onChange={handleEditInputChange}
          type="text"
          name="Update skill"
          placeholder="Update skill"
          value={inputs}
           />
        </div> */}
          {/* <input
          className="mb-2"
          size="lg"
          onChange={handleEditInputChange}
          type="text"
          name="Update skill"
          placeholder="Update skill"
          value={inputs}
           /> */}
          {/* <button className="btn btn-primary mx-2">Update</button> */}
          {/* <button onClick={() => handleCancelClick()}>Cancel</button> */}
        </>
      );
    };
    
    export default EditSkillsForm;
    

    【讨论】:

    • 感谢@ShravanDhar。现在,当我注意到当我再次单击编辑时它不起作用。你能告诉我为什么吗?
    • 更新了@Leo
    猜你喜欢
    • 1970-01-01
    • 2022-10-13
    • 2023-03-31
    • 2021-11-05
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    相关资源
    最近更新 更多