从 javascript/react 更新 react bootstrap typeahead 中的输入文本

如何解决从 javascript/react 更新 react bootstrap typeahead 中的输入文本

您好,我正在尝试创建一个 react bootstrap typeahead,我可以在其中从 javascript 更新我的输入文本。它适用于控制台,但不适用于代码

let typeaheadInput = document.getElementById('exTypeahead')
typeaheadInput.value = typeaheadInput.value + 'some text'

有没有其他方法可以在预先输入的输入框中插入文本

import React from 'react';
import { Typeahead } from "react-bootstrap-typeahead";

const data = [
    {id: 1,fullName: 'John'},{id: 2,fullName: 'Peter'},{id: 3,fullName: 'Blaszczykowski'},{id: 4,fullName: 'lewandowski'},]

class TypeaheadComp extends React.Component {

    constructor(props){
        super(props)
        this.state = {
            selectedList: []
        }
    }

    render() {
        return <Typeahead
                id="basic-example"
                onChange={(selected) => {
                    let temp = [];
                    selected.map(x => {
                        temp.push(x);
                    });
                    this.setState({selectedList: temp})

                }}
                options={data}
                placeholder="Select name or create full name"
                selected={this.state.selectedList}
                labelKey="fullName"
                multiple
                allowNew
                newSelectionPrefix="Enter full name: "
                inputProps={{id:'exTypeahead'}}
            />;
    }
}

export default TypeaheadComp

解决方法

defaultInputValue 属性可用于在初始渲染上设置输入值,但组件 intentionally does not provide 是用于以受控方式设置输入值的公共 API .

解决方法

注意:强烈建议不要使用这两种解决方法。

  1. 您可以通过在每次新安装时使用新的默认输入值卸载和重新安装组件(例如:通过更改密钥)来利用 defaultInputValue。这是非常严厉的,可能会导致性能问题或错误。
const [key,setKey] = useState(0);
const [value,setValue] = useState('');

return (
  <Typeahead
    ...
    defaultInputValue={value}
    key={key}
    onBlur={(e) => {
      setValue('some value');
      setKey(key + 1);
    }}
  />
);
  1. 您可以使用 ref 访问组件实例并使用 setState 方法更新组件状态的 text 键。这显然是不推荐的,因为 setState 是私有的,非常脆弱,随时可能损坏
const ref = useRef(null);

return (
  <Typeahead
    ...
    onBlur={() => {
      ref.current.setState({
        text: 'some value',});
    }}
    ref={ref}
  />
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?