我想使用textarea而不是input,并使用react-flow应用程序中 node 右下角的默认拖动图标(如下图所示)更改输入大小,因此我将input标记更改为textarea.

enter image description here

在这种情况下,我可以看到拖拽图标textarea,但我不能使用它,然后 node 移动.

如何在 node 上以textarea为单位更改输入大小?


MindMapNode.jsx

import {useLayoutEffect, useEffect, useRef} from 'react';
import {Handle, Position} from 'reactflow';

import useStore from '../store';

import DragIcon from './DragIcon';


function MindMapNode({id, data}) {
    const inputRef = useRef(null);
    const updateNodeLabel = useStore((state) => state.updateNodeLabel);

    useEffect(() => {
        setTimeout(() => {
            inputRef.current?.focus({preventScroll: true});
        }, 1);
    }, []);

    useLayoutEffect(() => {
        if (inputRef.current) {
            inputRef.current.style.width = `${data.label.length * 8}px`;
        }
    }, [data.label.length]);

    return (
        <>
            <div className="inputWrapper">
                <div className="dragHandle">
                    <DragIcon/>
                </div>
                <textarea
                    value={data.label}
                    onChange={(evt) => updateNodeLabel(id, evt.target.value)}
                    className="input"
                    ref={inputRef}
                />
            </div>

            <Handle type="target" position={Position.Top}/>
            <Handle type="source" position={Position.Top}/>
        </>
    );
}

export default MindMapNode;

其他文件基于ReactFlow官方GitHub https://github.com/xyflow/react-flow-mindmap-app/tree/main


node :20.10.0

react :18.2.0

reactflow:11.10.1

推荐答案

你可以通过在你的文本区域标签中添加nodrag nopan个类来禁用 node 拖拽,它应该会启用默认的拖拽调整功能

Reactjs相关问答推荐

如何创建react router v6的自定义子路由?

在Reaction+Redux+RTKQuery中对API调用进行排序

Reaction Axios多部分/表单-数据数组不工作

我想删除NextJs中的X轴标签APEXCHARTS

如何在与AntD的react 中限制文件上传和显示消息?

根据用户 Select 的注册类型更改表单字段

错误:操作必须是普通对象.使用自定义中间件进行异步操作. Redux/工具包

在 React 中,如何在指向同一组件的路由中拥有未定义数量的多个动态路径段?

列表中的每个子项都应该有一个唯一的keyprops .在react 应用程序中

我发送的 prop 的值不会改变.如果成功登录,导航栏中的 prop 必须为 true.我从后端得到 200 ok

React - 使用 useEffect 还是直接在 onChange 方法中更改值对性能最好?

使用 map 循环浏览列表列表中的列表并显示它们

在 React JS 中编辑表格数据

Select 项目后 Select HeadlessUI 组合框中的所有文本?

使用 React.lazy 调试 webpack 代码拆分

React JS:如何判断用户使用的是浏览器 url 还是桌面 electron

理解 React 中的 PrevState

如何用实际的br标签替换axios响应中的br标签?

CORS 政策:无访问控制允许来源-AWS 和 Vercel

链接的音译 Gatsby JS