【问题标题】:how to edit and change/rename the title(React)如何编辑和更改/重命名标题(反应)
【发布时间】:2020-07-10 09:50:32
【问题描述】:

你好:) 我正在编写简单的应用程序(类似于待办事项列表)。任务是添加更改公告标题等功能。

  1. 您添加公告的标题和描述并点击“提交”按钮 -> https://prnt.sc/tf8zxl
  2. 公告出现在下面,你需要有能力改变它的标题(重命名)->https://prnt.sc/tf8xa2

我在单击标题时添加了输入,但它不允许在其中写入,我不知道如何正确地将其保存在 this.state.data 中。

这里是源代码 -> https://codesandbox.io/s/eager-darkness-uh9xl?file=/src/App.js

【问题讨论】:

  • 标题更改问题已解决,但导致删除选项出现问题。它不会删除正确的项目

标签: javascript reactjs input


【解决方案1】:

受控输入

如果您需要受控输入,则必须以某种方式更改值。您目前没有更改任何内容,您正在调用 handleChange 更改 state.title,而不是 state.data[someIndex].title - 因此无法更改值。

我已经提供了modified solution 更新完成的地方。


不受控制的输入

如果您可以接受不受控制的输入,您可能正在寻找input 属性defaultValue 而不是value。它不会改变,因为您根本没有改变 value,所以它会立即使用来自 this.props.data.title 的原始值重新渲染。

我已经通过属性defaultValue 设置了值,并在onBlur 上更改了onChange,因此只有在您失去焦点时才会触发更新。
你的modified codesandbox.

【讨论】:

  • thank youuuu :) 从昨天开始我就在努力解决它
  • 我注意到删除选项当时工作不正常。
  • @MartaKozak 我只是针对问题如何编辑和更改,我并没有针对更新状态的回调方法的问题。还有更多的问题和相当无意义的代码部分。您可能正在寻找 this 之类的东西(更新原始答案有 2 个变体)。我希望它能帮助您更好地了解发生了什么。
  • 是的,我现在明白了。我检查了代码,它对我有很大帮助。再次感谢您。
【解决方案2】:

以这种方式使用输入

const [title,setTitle] = useState('')

<input type="text" value={title} onChange={(e)=>setTitle(e.target.value)} />

【讨论】:

    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多