【问题标题】:toggle contentEditable on and off inside React function?在 React 函数中打开和关闭 contentEditable?
【发布时间】:2020-03-01 05:33:04
【问题描述】:

我有一个反应函数,可以输出一个 div。这个 div 是可拖动的,它也应该是可编辑的。我曾尝试使用 contentEditable,它在设置为“true”时使 div 可编辑,但是我不能再拖动该项目,只能编辑它。

有没有办法让 div “可编辑性”打开和关闭,例如使用 onclick 将 contentEditable 设置为“on”,使用 doubleClick 将 contentEditable 设置为“true”,从而启用拖动?

return (
    <div
        onDoubleClick contentEditable={true} // needs to be toggleable, in some way

        ref={provided.innerRef}
        {...provided.draggableProps}
        {...provided.dragHandleProps}
        {item.content};
    </div>
)

【问题讨论】:

    标签: javascript html reactjs react-redux


    【解决方案1】:

    这就是使用钩子的方式。我假设你正在使用它们。

    const [contentEditable, setContentEditable] = React.useState(false)
    
    return (
        <div
            onDoubleClick={()=> setContentEditable(!contentEditable)}
    
            ref={provided.innerRef}
            {...provided.draggableProps}
            {...provided.dragHandleProps}
            {item.content};
        </div>
    )
    

    【讨论】:

    • 我没有使用钩子,这会爆炸:/对不起,但我真的很感谢你的帮助!
    • 要获得好的答案,您的问题需要更多上下文。指示内容是否可编辑的布尔值是否需要在另一个组件中访问?如果是这样,则此示例将不起作用。
    • github.com/vinceparis95/stem/tree/master/portal/scslime,在 src/App.js 中。 contentEditable 设置在第 142 行。再次感谢!你说得对,我想我在描述这个特定的上下文时遇到了麻烦(所有前端的菜鸟)。
    • 我让它工作了。查看第 110 行和第 197-200 行。第 112 行的 console.log 显示了 onDoubleClick 的布尔值变化。如果您可以删除反对票,将不胜感激?github.com/adamhinckley/stem/blob/master/portal/scslime/src/…
    • 您需要找到一种方法来保持该文本的状态。这是与此处提出的问题不同的问题。如果您在尝试将其保存在状态后仍无法弄清楚,请提出单独的问题并提供尽可能多的详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2013-12-15
    • 1970-01-01
    • 2013-05-06
    • 2019-09-18
    • 2016-08-10
    相关资源
    最近更新 更多