javascript - 自动完成编辑器(REACT,DRAFT-JS)
问题描述
我有一个家庭作业,我不知道该怎么做。做一个显示自动完成项目的 DRAFT-JS 编辑器非常简单。使用键盘自动完成中断(不在代码中)。但是我在更改状态编辑器时遇到了问题。这是代码的一尘不染的版本,请帮助我。
我尝试了一些用于自动完成的草稿 js 组件,但它让我在键盘上等待很糟糕。我认为这是一个聪明的解决方案,但我坚持这一点。
import React, { Component } from 'react';
import './testing.css';
import { Editor, EditorState, ContentState, convertToRaw } from 'draft-js';
export default class Autocomplete extends React.Component {
constructor (props){
super(props);
this.items=[
"Test1",
"Home",
"Gold",
"Miner",
"Team",
"Tenis",
];
this.state = {
suggestions: [],
search: "",
replace: "",
testBool: false,
editorState: EditorState.createEmpty()
};
}
onTextChange = (editorState) => {
var contentState = this.state.editorState.getCurrentContent();
const editorContentRaw = convertToRaw(contentState);//Returning some values equals to bullshit
const value =(editorContentRaw.blocks[0].text);
console.log('editor test: '+ value);//Return value of editor
const values=value.split(" ");//Get values to array
let suggestions = [];
if(value.length > 0){
const regex = new RegExp(`^${value}`, 'i');
suggestions = this.items.sort().filter(v => regex.test(v));
}
this.setState(() => ({suggestions, editorState }));
}
suggestionSelected(value){
this.setState(() => ({
suggestion: [],
}));
}
renderSuggestion (){
const {suggestions} = this.state;
if (suggestions.length === 0){
return null;
}
return(
<ul>
{suggestions.map((item) => <li onClick = {() => this.suggestionSelected(item)}> {item}</li>)}
</ul>
);
}
render() {
return (
<div class="AutoCompleteText">
<Editor onChange={this.onTextChange} editorState={this.state.editorState}/>
{this.renderSuggestion()}
</div>
);
}
}
解决方案
let trigger=false; //Triger for show/hide suggestions
window.addEventListener("keydown", event => { //event listener for keyboard shortcut
if (event.ctrlKey && event.which === 32) {
trigger = (!trigger); //switching true and false values
}
});
需要在主要组件之前。我知道了。
推荐阅读
- javascript - Shopify 打开特定产品页面的色板
- eigen - 复制向量的一个特征矩阵
- sql - MS Access 类似查询,结果中带有 #
- hibernate - EntityManagerFactory 注入
- json - 在 PowerShell 中使用来自 CSV 的数据修改 JSON 文件
- java - 未经检查的演员表:'java.lang.Class
>' 到 'java.lang.Class - postgresql - 创建带有视图定义转储的 SQL - 排序视图以避免依赖问题
- ionic-framework - 动态设置离子选择项的默认值
- php - 使用 utf8 格式的值传输 json 中的加密数据
- python - 如何在 OpenTripPlanner 中实时使用 gtfs