gpt4 book ai didi

javascript - 在 React 中单击按钮时,如何在输入字段的任意位置直接插入文本?

转载 作者:行者123 更新时间:2023-11-29 20:37:27 25 4
gpt4 key购买 nike

假设我有一个输入框:

<input type="text" value={this.state.title} />

现在它的值为例如“早上好!”。我想要做的是,当在输入字段中的任意位置单击特定按钮时,能够将一些预定义的文本插入到输入字段中。例如。当我点击 [First Name]"/[LastName]" 按钮时,输入字段的值可以变成,例如“早上好 [名字]”。

我现在可以通过获取焦点输入,将其分配给状态,然后使用它来了解要更改状态中的哪个键来在当前文本的末尾添加:

addCodeText(value) {
const { currFocusedInput } = this.state;

this.setState({
[currFocusedInput]: `${
this.state[currFocusedInput]
} [${value}]`,
});
}

但是,正如我提到的,这只会添加到文本的末尾。我希望能够直接插入输入标签/元素而不是改变状态,这样我就可以选择插入的位置(无论如何,输入元素是受控输入)。

我的意思是我可以将光标放在“早安”前面的输入字段中,然后单击该按钮时的结果值将是例如“[名字],早上好!”。在我当前的示例中,它总是附加在字符串值的末尾。

我该怎么做?

最佳答案

@catandmouse 还有另一种方法。您不需要使用Hooks。可以使用组件的本地 state 来完成通过setState方法。你可以玩下面的例子。

首先你得到字符串 "A word"里面<input> field 。点击按钮后,你会得到"A word with big sense" .

class FieldUpdate extends React.Component {
constructor() {
super();
this.state = {
title: 'A word',
};
}

onChange(e) {
this.setState({
title: e.target.value
});
}

updateText(text) {
this.setState({
title: `${this.state.title} ${text}`
});
}

render() {
return (
<div>
<input type="text" value={this.state.title} onChange={(e) => this.onChange(e)} />
<button onClick={() => this.updateText('with big sense')}>Update text</button>
</div>);
}
}

React.render(<FieldUpdate />, document.getElementById('app'));
<head><script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/0.14.0/react-dom.min.js"></script>
</head>
<body>
<div id="app"></app>
</body>

关于javascript - 在 React 中单击按钮时,如何在输入字段的任意位置直接插入文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56428833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com